UNIX Shell變量

2018-12-09 15:39 更新

Shell變量

變量就是被賦值后的字符串。那個(gè)賦給變量的值可以是數(shù)字、文本、文件名、設(shè)備或其他類(lèi)型的數(shù)據(jù)。

本質(zhì)上,變量就是執(zhí)行實(shí)際數(shù)據(jù)的指針。Shell 可以創(chuàng)建、賦值和刪除變量。

變量名

變量名僅能包含字母、數(shù)字或者下劃線(xiàn)。

約定俗成的,UNIX Shell 的變量名都使用大寫(xiě)。

下面是一些有效的變量名的例子:

    _ALI
    TOKEN_A
    VAR_1
    VAR_2

下面是一些無(wú)效的變量名的例子:

    2_VAR
    -VARIABLE
    VAR1-VAR2
    VAR_A!

不能使用!、*、-等字符的原因是,這些字符在 Shell 中有特殊用途。

定義變量

變量可以按照如下方式來(lái)定義:

    variable_name=variable_value

比如:

    NAME="Zara Ali"

上述例子定義了變量 NAME,然后賦值 "Zara Ali".這種類(lèi)型的變量是常規(guī)變量,這種變量一次只能賦值一個(gè)。

Shell 可以隨心所欲的賦值。比如:

    VAR1="Zara Ali"
    VAR2=100

訪(fǎng)問(wèn)變量

為了獲取存儲(chǔ)在變量?jī)?nèi)的值,需要在變量名前加 $.

比如,下面的腳本可以訪(fǎng)問(wèn)變量 NAME 中的值,然后將之打印到 STDOUT:

    #!/bin/sh

    NAME="Zara Ali"
    echo $NAME

會(huì)出現(xiàn)下面的值:

    Zara Ali

只讀變量

Shell 使用只讀命令提供了使變量只讀化的功能。這樣的變量,都不能被改變。

比如,下面的腳本中,對(duì)變量 NAME 的值進(jìn)行修改,系統(tǒng)會(huì)報(bào)錯(cuò):

    #!/bin/sh

    NAME="Zara Ali"
    readonly NAME
    NAME="Qadiri"

會(huì)出現(xiàn)如下結(jié)果:

    /bin/sh: NAME: This variable is read only.

刪除變量

變量的刪除會(huì)告訴 Shell 從變量列表中刪除變量從而,無(wú)法對(duì)其進(jìn)行跟蹤。一旦用戶(hù)刪除了一個(gè)變量,將無(wú)法訪(fǎng)問(wèn)存儲(chǔ)在變量中。

下面是使用 unset 指令的例子:

    unset variable_name

上述指令會(huì)取消已定義變量。下面是簡(jiǎn)單的例子:

    #!/bin/sh

    NAME="Zara Ali"
    unset NAME
    echo $NAME

上述例子不會(huì)顯示任何信息,不能使用 unset 指令取消被標(biāo)記為只讀模式的變量。

變量類(lèi)型

Shell 腳本被執(zhí)行的時(shí)候,主要存在如下三種變量類(lèi)型:

  • 局部變量:該類(lèi)型變量只會(huì)在當(dāng)前 Shell 實(shí)例內(nèi)有效。他們無(wú)法適用于由 Shell 啟動(dòng)的程序。他們僅在命令提示符處進(jìn)行設(shè)置。
  • 環(huán)境變量:環(huán)境變量對(duì) Shell 的任何子進(jìn)程都有效。部分程序是需要正確的調(diào)用函數(shù)才需要環(huán)境變量。通常,Shell 腳本只會(huì)定義程序運(yùn)行需要的環(huán)境變量。
  • Shell 變量:該類(lèi)型變量是由 Shell 設(shè)置的專(zhuān)用變量,是用來(lái)正確調(diào)用函數(shù)用的。有時(shí)這些變量是環(huán)境變量,有時(shí)是局部變量。
以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)