回覆列表
  • 1 # 使用者9923191605008

    1. if-then 語句

    基本格式:

    if command //若command命令執行完畢之後的狀態碼返回值為0,則執行then中的命令,否則 不執行then中的命令

    then

    commands

    fi

    if command;then //另一種格式

    commands

    fi

    else 格式

    if command;then //如果command中命令返回的退出狀態碼為0,則執行then

    commands

    else

    commands //如果command中命令返回的退出狀態碼為非0,則執行else

    fi

    elif 格式

    if command;then

    commands

    elif command;then

    commands

    elif command;then

    commands

    else

    commands

    fi

    2. test命令

    if test condition;then //如果condition條件不寫,則以非零狀態碼退出,執行else中的 commands

    commands

    else

    commands

    fi

    (1) my_variable="full"; test $my_variable //若變數my_variable為空,則退出碼為非0,若有內容,則為0

    方括號的表達形式

    if [ condition ] //使用方括號來代替test,但是在方括號的兩邊必須具有空格

    then

    commands

    fi

    通常test可以測試三類條件

    (1)數值比較

    n1 -eq n2 //是否相等,相等,則退出碼為0

    n1 -ge n2 //是否大於或等於

    n1 -gt n2 //是否大於

    n1 -le n2 //是否小於等於

    n1 -lt n2 //是否小於

    n1 -ne n2 //不等於

    其中n1 和 n2 可以使用變數,例如有變數var ,可以 $var -ne n2 這樣使用,這種比較不能使用在浮點數中

    (2)字串比較

    str1 = str2 //比較是否相等,透過ASCII表來比較,因此會比較標點,大小寫等

    str1 != str2 //比較是否不相等 等號兩邊留空格,也可以使用變數的方式

    str1 \> str2 //比較大於,大於號需要轉義,避免被shell當成重定向符

    str1 \< str2 //比較小於,小於號需要轉移,避免被shell當成重定向符

    -n str1 //測試str1的長度是否為非0

    -z str1 //測試長度是否為0

    if [ -z $var ] //在這裡,若var未被定義,這裡也是可以執行的,只是var的長度為0, 故-z $var的退出碼為0

    (3)檔案比較

    -d file //檢查file是否存在且是一個目錄

    -e file //檢查file 是否存在

    -f file //檢查file是否是一個檔案

    -r file //檢查file 是否存在並可讀

    -s file //檢查file是否存在並非空

    -w file //檢查file 是否存在並可寫

    -x file //檢查file是否存在並可執行

    -O file //檢查file是否存在並屬於當前使用者

    -G file //檢查file是否存在並且預設組與當前使用者相同

    file1 -nt file2 檢查file1是否比file2新

    file1 -ot file2 檢查file1是否比 fil2舊

    3.複合條件測試

    [ condition1 ] && [ condition2 ]

    [ condition1 ] || [ condition2 ]

    4.if-then 的高階特性

    針對數學運算子的高階特性

    (( expression )) ,支援除了上面以外的其他運算子

    val++ 後增

    val-- 後減

    ++val 先增

    --val 先減

    ! 邏輯求反

    ~ 位求反

    ** 冪運算

    << 左位移

    >> 右位移

    & 位布林求反

    | 位布林或

    && 邏輯和

    || 邏輯或

    針對字串比較的高階特性

    [[ expression ]],兩邊有空格

    5.case命令

    case variable in

    pattern1 | pattern2) commands1;;

    pattern3) commands2;;

    *) commands;;

  • 中秋節和大豐收的關聯?
  • 地下城堡2紅錘打法?