變量基礎shell
在 Bash shell 中,每個變量的值都是字符串,變量賦值時,值都會以字符串的形式存儲。也就是說,Bash shell 在默認狀況下不會區分變量類型,即便你將整數和小數賦值給變量,它們也會被視爲字符串 。
編程
變量名bash
命名只能使用英文字母,數字和下劃線,首個字符不能以數字開頭。
ide
中間不能有空格,可使用下劃線(_)。函數
不能使用標點符號。spa
不能使用bash裏的關鍵字(可用help命令查看保留關鍵字)。blog
除了顯式地直接賦值,還能夠用語句給變量賦值進程
使用變量圖片
使用一個定義過的變量,只要在變量名前面加美圓符號$便可
作用域
推薦給全部變量加上花括號{ },這是個良好的編程習慣。
例:
修改變量值
第二次對變量賦值時不能在變量名前加,只有在使用變量時才能加 ,只有在使用變量時才能加,只有在使用變量時才能加
例:
單引號和雙引號的區別
定義變量時,變量的值能夠由單引號’ ‘包圍,也能夠由雙引號" "包圍
例:
以單引號’ '包圍變量的值時,單引號裏面是什麼就輸出什麼,即便內容中有變量和命令(命令須要反引發來)也會把它們原樣輸出。這種方式比較適合定義顯示純字符串的狀況,即不但願解析變量、命令等的場景。
以雙引號" "包圍變量的值時,輸出時會先解析裏面的變量和命令,而不是把雙引號中的變量名和命令原樣輸出。這種方式比較適合字符串中附帶有變量和命令而且想將其解析後再輸出的變量定義。
只讀變量
使用 readonly 命令能夠將變量定義爲只讀變量,只讀變量的值不能被改變。
變量做用域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 中有兩種方式能夠完成命令替換,一種是反引號,一種是$()
示例