shell腳本的參考書從基礎到進階可以找幾百本出來,豆子這裡過為了整個學習筆記的完整性,還是厚顔把最最基本的文法回顧一遍。最基本包括變量,比較,運算符,條件語句,循環語句。
變量分為本地變量,環境變量,位置變量
首先看看本地變量, 變量名=值的方式指派,不過隻在目前的shell裡面有效
比如,子shell裡面就無法識别了
可以通過export的方式配置環境變量,這樣子shell裡面也可以識别
不過上面的配置隻是臨時生效,重新開機就沒了
可以通過修改配置檔案的方式永久生效。登入家目錄的時候,會自動加載家目錄下的這些隐藏檔案。
上面隻是對目前使用者生效,如果對所有使用者都生效,可以修改/etc/bashrc 檔案。
這些檔案的加載的順序如下所示。
shell裡面已經有預先配置的環境變量了,比如
可以根據需要修改,比如我需要提示符前面顯示整個路徑,可以修改$ps1 變量
此外,還有針對位置的變量,比如$1,$2分别代表第一個位置和第二個位置的變量。如果是10要括弧起來
我還可以用 $# 統計所有的變量數目,$* 輸出所有變量
例如:輸出第一個位置值(程式本身名字) 第二個位置的值(其實是第一個參數)
輸出的時候注意差別,單引号,雙引号和反引号
還有一些預定義的變量有特殊意義, $?表示上一次的指令的傳回值,0表示成功,其他數字表示失敗
比較主要可以對數值,字元比較;注意這個和其他很多語言是反的,-eq ,-gt之類的比較的是數字;==,< 反而比較的是字元。
除此還可以判斷檔案,目錄是否存在。
對于數值運算,可以通過declare,(()),let和bc來操作。但是隻有bc可以進行浮點運算,其他都是整數運算。
條件判斷語句一般有兩種 if ..else 或者 case 的形式。
比如判斷一個使用者名是否存在
根據case 判斷
循環比較常用 while 和 for
比如從1加到10
可以通過read讀取檔案或者螢幕輸入
比如 輸出 passwd的内容
類似的,讀取test.txt的内容,建立使用者
如果想中斷循環,可以用break;
for 循環也很簡單,比如輸出一個乘法表