Shell 使用Shell變數


變數是一個字串,我們分配一個值。分配的值可以是一個數位,文字,檔案名,裝置,或任何其他型別的資料。

變數是沒有超過實際資料的指標。 shell,可以建立,分配和刪除變數。

變數名:

變數的名稱可以包含只有字母(a到z或A到Z),數位(0?9)或下劃線(_)。

按照慣例,UNIX的shell變數將有自己的名稱以大寫字母。

下面的例子是有效的變數名:

_ALI
TOKEN_A
VAR_1
VAR_2

以下是無效的變數名的例子:

2_VAR
-VARIABLE
VAR1-VAR2
VAR_A!

不能使用其他字元,如!,*或 - 這些字元有特殊含義。

定義變數:

變數定義如下:

variable_name=variable_value

例如:

NAME="Zara Ali"

上面的例子中定義的變數名和分配值“Zara Ali”。這種型別的變數被稱為標量變數。一個標量變數只能容納一個值一次。

shell可以儲存任何你想在一個變數的值。例如:

VAR1="Zara Ali"
VAR2=100

存取值:

為了存取儲存在一個變數的值,它的名字的字首為美元符號($):

例如,下面的指令碼將存取的價值定義的變數名,將它列印在標準輸出:

#!/bin/sh

NAME="Zara Ali"
echo $NAME

這將產生以下值:

Zara Ali

唯讀變數:

shell提供了一種標記為唯讀變數使用的唯讀命令。後一個變數被標記為唯讀的,它的值不能被改變。

例如,下面的指令碼將給出錯誤提示,同時試圖改變NAME的值: 

#!/bin/sh

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

這個結果將產生以下如下:

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

取消設定變數:

登出或刪除的變數告訴shell刪除的變數的變數列表做了跟蹤。一旦您取消設定變數,你不可以存取儲存在變數值。

以下是使用unset命令定義一個變數的語法:

unset variable_name

上面的命令將取消設定定義的變數值。下面是一個簡單的例子:

#!/bin/sh

NAME="Zara Ali"
unset NAME
echo $NAME

上面的例子會不會列印出任何東西。不能使用unset命令取消定義的變數沒有被標記為唯讀。

變數型別:

當一個shell執行,存在三種主要型別的變數:

  • 區域性變數: 區域性變數是一個變數所做的是在當前範例中的shell。這不是程式由shell開始。在命令提示字元下設定。

  • 環境變數: 環境變數是一個變數所做的是任何子進程的shell。有些程式需要以正常的環境變數。通常一個shell指令碼定義,只有那些環境變數所需要的程式沒有執行。

  • Shell 變數: shell變數是一個特殊的變數,由shell設定,也是shell正常需要。一些合成變數環境變數,而其他區域性變數。