天天看點

RHCE 學習筆記(38 ) - Shell

shell腳本的參考書從基礎到進階可以找幾百本出來,豆子這裡過為了整個學習筆記的完整性,還是厚顔把最最基本的文法回顧一遍。最基本包括變量,比較,運算符,條件語句,循環語句。

變量分為本地變量,環境變量,位置變量

首先看看本地變量, 變量名=值的方式指派,不過隻在目前的shell裡面有效

比如,子shell裡面就無法識别了

RHCE 學習筆記(38 ) - Shell

可以通過export的方式配置環境變量,這樣子shell裡面也可以識别

RHCE 學習筆記(38 ) - Shell

不過上面的配置隻是臨時生效,重新開機就沒了

RHCE 學習筆記(38 ) - Shell

可以通過修改配置檔案的方式永久生效。登入家目錄的時候,會自動加載家目錄下的這些隐藏檔案。

RHCE 學習筆記(38 ) - Shell
RHCE 學習筆記(38 ) - Shell

上面隻是對目前使用者生效,如果對所有使用者都生效,可以修改/etc/bashrc 檔案。

這些檔案的加載的順序如下所示。

RHCE 學習筆記(38 ) - Shell

shell裡面已經有預先配置的環境變量了,比如

RHCE 學習筆記(38 ) - Shell

可以根據需要修改,比如我需要提示符前面顯示整個路徑,可以修改$ps1 變量

RHCE 學習筆記(38 ) - Shell

此外,還有針對位置的變量,比如$1,$2分别代表第一個位置和第二個位置的變量。如果是10要括弧起來

我還可以用 $# 統計所有的變量數目,$* 輸出所有變量

RHCE 學習筆記(38 ) - Shell

例如:輸出第一個位置值(程式本身名字) 第二個位置的值(其實是第一個參數)

RHCE 學習筆記(38 ) - Shell

輸出的時候注意差別,單引号,雙引号和反引号

RHCE 學習筆記(38 ) - Shell

還有一些預定義的變量有特殊意義, $?表示上一次的指令的傳回值,0表示成功,其他數字表示失敗

RHCE 學習筆記(38 ) - Shell
RHCE 學習筆記(38 ) - Shell

比較主要可以對數值,字元比較;注意這個和其他很多語言是反的,-eq ,-gt之類的比較的是數字;==,< 反而比較的是字元。

RHCE 學習筆記(38 ) - Shell

除此還可以判斷檔案,目錄是否存在。

RHCE 學習筆記(38 ) - Shell

對于數值運算,可以通過declare,(()),let和bc來操作。但是隻有bc可以進行浮點運算,其他都是整數運算。

RHCE 學習筆記(38 ) - Shell
RHCE 學習筆記(38 ) - Shell
RHCE 學習筆記(38 ) - Shell

條件判斷語句一般有兩種 if ..else 或者 case 的形式。

比如判斷一個使用者名是否存在

RHCE 學習筆記(38 ) - Shell

根據case 判斷

RHCE 學習筆記(38 ) - Shell
RHCE 學習筆記(38 ) - Shell

循環比較常用 while 和 for

比如從1加到10

RHCE 學習筆記(38 ) - Shell

可以通過read讀取檔案或者螢幕輸入

比如 輸出 passwd的内容

RHCE 學習筆記(38 ) - Shell
RHCE 學習筆記(38 ) - Shell

類似的,讀取test.txt的内容,建立使用者

RHCE 學習筆記(38 ) - Shell
RHCE 學習筆記(38 ) - Shell

如果想中斷循環,可以用break;

RHCE 學習筆記(38 ) - Shell
RHCE 學習筆記(38 ) - Shell

for 循環也很簡單,比如輸出一個乘法表

RHCE 學習筆記(38 ) - Shell
RHCE 學習筆記(38 ) - Shell