Shell指令碼定義變數和變數的引用

2021-10-03 09:05:24 字數 1292 閱讀 7613

variablename="value"
注意:變數名和等號之間不能有空格,這和程式語言都不一樣。

同時,變數名的命名須遵循如下規則:

已定義的變數,可以被重新定義。

variablename="good"
注意:第二次賦值的時候不能寫$variablename=「good」,使用變數的時候才加美元符($)。

格式:$variablename

變數名外面的花括號是可選的,加不加都行,加花括號是為了幫助直譯器識別變數的邊界,比如下面這種情況: 

for action in reading writing changing

do echo "i am good at $book"

done

如果不給action變數加花括號,寫成echo "i am good at $actionbook",直譯器就會把$actionbook當成乙個變數(其值為空)

**執行結果就不是我們期望的樣子了。推薦給所有變數加上花括號,這是個好的程式設計習慣。

接下來介紹兩個命令:

原理:

執行指令碼時是在乙個子shell環境執行的,指令碼執行完後該子shell自動退出;

乙個shell中的系統環境變數才會被複製到子 shell中(用export定義的變數);

乙個shell中的系統環境變數只對該shell或者它的子shell有效,該shell結束時變數消失 (並不能返回到父shell中)。

不用export定義的變數只對該shell有效,對子shell也是無效的。

通常把環境變數放在開發板的/etc/profile檔案裡面

export log=4
在其他指令碼中直接引用,前面加上環境變數路徑  source /etc/profile

可以直接在命令列輸入export log=4進行修改

(1)$ 變數a的值, 在不引起歧義的情況下可以省略大括號。

(2)$(cmd) 命令替換,和`cmd`效果相同,結果為shell命令cmd的輸出,過某些shell版本不支援$()形式的命令替換, 如tcsh。

(3)$((expression)) 和`exprexpression`效果相同, 計算數學表示式exp的數值, 其中exp只要符合c語言的運算規則即可, 甚至三目運算子和邏輯表示式都可以計算。

shell指令碼 預定義變數

有些變數是一開始執行script指令碼時就會設定,且不能被修改,我們叫他們為預定義變數。這些變數當一執行程式時就有了,以下是一些預定義變數 表示所有位置引數的內容,即以乙個字串顯示所有向指令碼傳遞的引數 以 1 2 n 的形式輸出所有引數 表示命令行中位置引數的個數,傳遞到指令碼的引數個數 與 相同...

shell指令碼學習 初學,定義變數

兩年前有簡單的接觸過shell指令碼,不過還來不及深入了解就換工作了。從現在開始重新學習一下。linux 的 shell 種類眾多,常見的有 在一般情況下,人們並不區分 bourne shell 和 bourne again shell,所以,像 bin sh,它同樣也可以改為 bin bash。告...

shell指令碼(變數)

1 定義及賦值 格式 變數名 變數值 等號兩邊沒有空格 2 引用 檢視 變數 格式 變數名 例 title shaodianlingxing echo title 輸出 shaodianlingxing 3 雙引號 功能 允許引用 轉義 例如 echo title group 輸出 shaodian...