溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

shell 變量

發(fā)布時間:2020-04-05 20:01:40 來源:網(wǎng)絡(luò) 閱讀:300 作者:大阿鵬 欄目:系統(tǒng)運維

量基礎(chǔ)

在 Bash shell 中,每一個變量的值都是字符串,變量賦值時,值都會以字符串的形式存儲。也就是說,Bash shell 在默認(rèn)情況下不會區(qū)分變量類型,即使你將整數(shù)和小數(shù)賦值給變量,它們也會被視為字符串 。


變量名

命名只能使用英文字母,數(shù)字和下劃線,首個字符不能以數(shù)字開頭。

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

不能使用標(biāo)點符號。

不能使用bash里的關(guān)鍵字(可用help命令查看保留關(guān)鍵字)。

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


使用變量

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

推薦給所有變量加上花括號{ },這是個良好的編程習(xí)慣。

例:

shell 變量


修改變量值

第二次對變量賦值時不能在變量名前加,只有在使用變量時才能加 ,只有在使用變量時才能加,只有在使用變量時才能加

例:

shell 變量


單引號和雙引號的區(qū)別

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

:

shell 變量

以單引號’ '包圍變量的值時,單引號里面是什么就輸出什么,即使內(nèi)容中有變量和命令(命令需要反引起來)也會把它們原樣輸出。這種方式比較適合定義顯示純字符串的情況,即不希望解析變量、命令等的場景。

以雙引號" "包圍變量的值時,輸出時會先解析里面的變量和命令,而不是把雙引號中的變量名和命令原樣輸出。這種方式比較適合字符串中附帶有變量和命令并且想將其解析后再輸出的變量定義。

只讀變量


使用 readonly 命令可以將變量定義為只讀變量,只讀變量的值不能被改變。

shell 變量


變量作用域Scope

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


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

有的變量只能在函數(shù)內(nèi)部使用,這叫做局部變量(local variable);

有的變量可以在當(dāng)前 Shell 進(jìn)程中使用,這叫做全局變量(global variable);

而有的變量還可以在子進(jìn)程中使用,這叫做環(huán)境變量(environment variable)。


export a這種形式是在定義變量 a 以后再將它導(dǎo)出為環(huán)境變量,如果想在定義的同時導(dǎo)出為環(huán)境變量,可以寫作export a=20。


環(huán)境變量也是臨時的


創(chuàng)建一個新的Shell窗口時,在次訪問該環(huán)境變量依舊訪問不到。


通過 export 導(dǎo)出的環(huán)境變量只對當(dāng)前 Shell 進(jìn)程以及所有的子進(jìn)程有效,如果最頂層的父進(jìn)程被關(guān)閉了,那么環(huán)境變量也就隨之消失了,其它的進(jìn)程也就無法使用了,所以說環(huán)境變量也是臨時的。


命令替換

Shell命令替換是指將命令的輸出結(jié)果賦值給某個變量。比如,在某個目錄中輸入 ls 命令可查看當(dāng)前目錄中所有的文件,但如何將輸出內(nèi)容存入某個變量中呢?這就需要使用命令替換了,這也是 Shell 編程中使用非常頻繁的功能。


替換方式

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

示例

shell 變量


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI