天天看點

shell 變量

變量基礎

在 Bash shell 中,每一個變量的值都是字元串,變量指派時,值都會以字元串的形式存儲。也就是說,Bash shell 在預設情況下不會區分變量類型,即使你将整數和小數指派給變量,它們也會被視為字元串 。

變量名

命名隻能使用英文字母,數字和下劃線,首個字元不能以數字開頭。

中間不能有空格,可以使用下劃線(_)。

不能使用标點符号。

不能使用bash裡的關鍵字(可用help指令檢視保留關鍵字)。

除了顯式地直接指派,還可以用語句給變量指派

使用變量

使用一個定義過的變量,隻要在變量名前面加美元符号$即可

推薦給所有變量加上花括号{ },這是個良好的程式設計習慣。

例:

shell 變量

修改變量值

第二次對變量指派時不能在變量名前加,隻有在使用變量時才能加 ,隻有在使用變量時才能加,隻有在使用變量時才能加

shell 變量

單引号和雙引号的差別

定義變量時,變量的值可以由單引号’ ‘包圍,也可以由雙引号" "包圍

shell 變量

以單引号’ '包圍變量的值時,單引号裡面是什麼就輸出什麼,即使内容中有變量和指令(指令需要反引起來)也會把它們原樣輸出。這種方式比較适合定義顯示純字元串的情況,即不希望解析變量、指令等的場景。

以雙引号" "包圍變量的值時,輸出時會先解析裡面的變量和指令,而不是把雙引号中的變量名和指令原樣輸出。這種方式比較适合字元串中附帶有變量和指令并且想将其解析後再輸出的變量定義。

隻讀變量

使用 readonly 指令可以将變量定義為隻讀變量,隻讀變量的值不能被改變。

shell 變量

變量作用域Scope

Shell變量的作用域(Scope),就是 Shell 變量的有效範圍(可以使用的範圍)。

Shell 變量的作用域可以分為三種:

有的變量隻能在函數内部使用,這叫做局部變量(local variable);

有的變量可以在目前 Shell 程序中使用,這叫做全局變量(global variable);

而有的變量還可以在子程序中使用,這叫做環境變量(environment variable)。

export a這種形式是在定義變量 a 以後再将它導出為環境變量,如果想在定義的同時導出為環境變量,可以寫作export a=20。

環境變量也是臨時的

建立一個新的Shell視窗時,在次通路該環境變量依舊通路不到。

通過 export 導出的環境變量隻對目前 Shell 程序以及所有的子程序有效,如果最頂層的父程序被關閉了,那麼環境變量也就随之消失了,其它的程序也就無法使用了,是以說環境變量也是臨時的。

指令替換

Shell指令替換是指将指令的輸出結果指派給某個變量。比如,在某個目錄中輸入 ls 指令可檢視目前目錄中所有的檔案,但如何将輸出内容存入某個變量中呢?這就需要使用指令替換了,這也是 Shell 程式設計中使用非常頻繁的功能。

替換方式

Shell 中有兩種方式可以完成指令替換,一種是反引号,一種是$()

下一篇: go時間解析

繼續閱讀