Shell指令碼學習 語法篇 上)

2021-09-30 13:58:19 字數 1953 閱讀 4863

1.條件測試:test [

命令test或[可以測試乙個條件是否成立,如果測試結果為真,則該命令的退出狀態為0,如果測試結果為假,則為1(與c語言的邏輯剛好相反)。

[是乙個命令的名字,傳給命令的各個引數之間應該用空格隔開。

測試命令:

[ -d dir ]:如果dir存在並且是乙個目錄則為真

[ -f file ]:如果file存在且是乙個普通檔案則為真

[ -z string ]:如果string的長度為零則為真

[ -n string ]:如果string的長度非零則為真

[ string1=string 2 ]:如果兩個字串相同則為真

[ string1!=string 2 ]:如果兩個字串不相同則為真

整數的比較:

-eq(等於)   -ne(不等於)    -lt(小於)

-gt(大於)   -ge(大於等於)  -le(小於等於)

字串的比較:

==(等於) !=(不等於)  =(等於)但不推薦使用

帶與、或、非的測試命令

[ !expr ]:expr可以是任意一種的測試,!表示邏輯反

[ expr1 -a expr2 ]:-a表示邏輯與

[ expr1 -o expr2 ]:-o表示邏輯或

[和[[的不同在於[[支援萬用字元和正規表示式

&&相當於「if...then」

||相當於「if not...then"

2.if/then/elif/else/fi

如果兩條命令寫在同一行則需要用分號;隔開,一行只寫一條命令就不需要寫了;另外,then後面有換行,但這條命令沒有寫完,shell會自動續行,把下一行接在then後面當作一條命令處理。

注意:命令和引數之間必須用空格隔開。

if命令的引數組成一條子命令,如果該子命令的退出狀態為真,則執行then後面的子命令,如果維嘉則執行elif、else或者fi後面的子命令。

if後面的子命令通常是測試命令,但也可以是其他命令。shell指令碼中沒有{},用fi表示if語句的結束。

3.case/esac

shell指令碼中沒有switch,但有case,shell指令碼中的case可以匹配字串和wildcard,每個匹配分支可以有若干條命令,末尾必須以;;結束,執行時找到第乙個匹配的分支並執行相應的命令,然後直接跳到esac之後,不用break。

$1是乙個特殊變數,在執行指令碼時自動取值為第乙個命令列引數,也就是start,所以進入start分支執行相關的命令。

迴圈體不能為空,條件判斷的條件分支不能出現空語句,冒號,條件永遠成立,退出碼為0。

方法一:

方法二:

方法三:推薦使用。

Linux學習 語法

語法 if then 語句 if then else 語句 if 測試條件成立 then 執行命令 elif 條件成立 then 執行命令 else 條件不成立時,執行相應命令 fi 結束 bin bash case demo case 1 in start start echo 0 start.s...

shell指令碼學習之語法

一 條件測試 1 條件測試 test或 命令test可以測試乙個條件是否成立,若測試結果為真,則退出碼為0,若測試結果為假,則為1 在比較兩個字串是否相等時,建議加上雙引號,且在表示式兩邊均加上相同的乙個字母 test x data xhello 注意命令和變數的空格,重要重要重要!命令後面加空格,...

Python學習 語句 語法

注釋,不支援多行注釋 連線,當一行的程式太長時,可以使用連線符 反斜槓 1 使用if elif 和 else 進行標記 小於兩個的選擇 if 條件 語句段1 else 語句段2 大於兩個的選擇 if 條件1 語句段1 elif 條件2 語句段2 else 語句段3 2 使用while進行迴圈 whi...