一、基本變量
linux腳本中的變量不需要事先聲明,而是直接定義使用(這點不同於其他高級編程語言中變量的使用)bash變量類型分爲本地變量和環境變量。
本地變量:只對當前的shell有效,對其他shell及其子shell沒效
環境變量:對當前shell進程及其子shell有效,對其它的shell進程無效。
位置變量:$1, $2, ..., ${10};$1爲第一個輸入的變量$0爲函數的本身,$#和$@爲總共輸入變量的數量。
特殊變量:$?
$$: Shell本身的PIDProcessID
$!: Shell最後運行的後臺Process的PID
$?: 最後運行的命令的結束代碼返回值
$-: 使用Set命令設定的Flag一覽
$*: 所有參數列表。如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數。
$@: 所有參數列表。如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有參數。
$#: 添加到Shell的參數個數
$0: Shell本身的文件名
$1$n: 添加到Shell的各參數值。$1是第1參數、$2是第2參數…
變量的引用 " ":弱引用,裏面的變量會被替換;
' ':強引用,裏面的所有字符都是字面量,直接輸出.
二、基本語句
①if語句
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | (1)單分支的if語句: if 測試條件; then 選擇分支 fi 表示條件測試狀態返回值爲0時,則執行選擇分支
或者另外一種格式: if 測試條件 then 選擇分支 fi
(2)雙分支的if語句: if 測試條件; then 選擇分支1 else 選擇分支2 fi 兩個分支僅執行其中之一。
(3)多分支的if語句: if 條件1; then 分支1 elif 條件2; then 分支2 elif 條件3; then 分支3 ... else 分支n fi |
②、case語句
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | case 語句:有多個測試條件時,case語句會使得語法結構更明晰
格式: case 變量引用 in PATTERN1) 分支1 ;; PATTERN2) 分支2 ;; ... *) 分支n ;; esac
|
③、for語句
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 格式: for VAR_NAME in LIST do 循環體 done
或者可以寫成: for VAR_NAME in LIST ;do 循環體 done
LIST:列表,中間包括一個或多個元素
退出條件:遍歷結束
for的第二種使用格式 : for ((初始條件;測試條件;修改表達式)); do 循環體 done |
④、while語句
1 2 3 4 5 | while 測試條件; do 循環體 done
如測試結果爲“真”,則進入循環;退出條件爲,測試條件爲假; |
⑤、until語句
1 2 3 4 5 | until 測試條件; do 循環體 done
如果測試結果爲“假”,則進入循環;退出條件爲,測試條件爲真; |
⑥、函數
(函數要先定義,然後才能使用)
1 2 3 4 5 6 7 8 9 | 語法: 兩種格式: function F_NAME { 函數體 }
F_NAME() { 函數體 } |
⑦、信號捕捉
trap: 可以在信號出現時捕獲信號和執行其他命令
1 2 3 4 5 6 7 8 9 10 11 | trap CMDs SIGNALs Linux使用信號與系統上運行的進程進行通信。常用的信號 1 SIGHUP 掛起進程 2 SIGINT 中斷進程 3 SIGQUIT 停止進程 9SIGKILL 無條件終止進程 15 SIGTERM 如果可能的話終止進程 17 SIGSTOP 無條件停止但不終止它 18 SIGTSTP 停止或暫停進程但不終止它 19 SIGCONT 重新啓動停止的進程 默認情況下bash shell會忽略SIGQUIT3和SIGTERM5信號以防止交互的shell意外終止 捕獲信號
|
⑧、數組