條件判斷:if語句
語法格式:
if [ expression ]thenStatement(s) to be executed if expression is truefi
注意:expression 和方括號([ ])之間必須有空格,否則會有語法錯誤。
if 語句通過關系運算符判斷表達式的真假來決定執(zhí)行哪個分支。Shell 有三種 if ... else 語句:
if ... fi 語句if ... else ... fi 語句if ... elif ... else ... fi 語句
示例:
#!/bin/bash/a=10b=20if [ $a == $b ]then echo "a is equal to b"elif [ $a -gt $b ]thenecho "a is greater to b"elseecho "a is less to b"fi
if ... else 語句也可以寫成一行,以命令的方式來運行:
a=10;b=20;if [ $a == $b ];then echo "a is equal to b";else echo "a is not equal to b";fi;
if ... else 語句也經(jīng)常與 test 命令結合使用,作用與上面一樣:
#!/bin/bash/a=10b=20if test $a == $b then echo "a is equal to b"elseecho "a is not equal to b"fi
分支控制:case語句
case ... esac 與其他語言中的 switch ... case 語句類似,是一種多分枝選擇結構。
示例:
#!/bin/bash/grade="B"case $grade in "A") echo "Very Good!";;"B") echo "Good!";;"C") echo "Come On!";;*) echo "You Must Try!"echo "Sorry!";;esac
轉(zhuǎn)換成C語言是:
#include <stdio.h>int main(){char grade = 'B';switch(grade){case 'A': printf("Very Good!");break;case 'B': printf("Very Good!");break;case 'C': printf("Very Good!");break;default: printf("You Must Try!");printf("Sorry!");break;}return 0;}對比看就很容易理解了。很相似,只是格式不一樣。
需要注意的是:
取值后面必須為關鍵字 in,每一模式必須以右括號結束。取值可以為變量或常數(shù)。匹配發(fā)現(xiàn)取值符合某一模式后,其間所有命令開始執(zhí)行直至 ;;。;; 與其他語言中的 break 類似,意思是跳到整個 case 語句的最后。
取值將檢測匹配的每一個模式。一旦模式匹配,則執(zhí)行完匹配模式相應命令后不再繼續(xù)其他模式。如果無一匹配模式,使用星號 * 捕獲該值,再執(zhí)行后面的命令。
再舉一個例子:
#!/bin/bashoption="${1}"case ${option} in"-f") FILE="${2}"echo "File name is $FILE";;"-d") DIR="${2}"echo "Dir name is $DIR";;*) echo "`basename ${0}`:usage: [-f file] | [-d directory]"exit 1 # Command to come out of the program with status 1;;esac運行結果:
$./test.shtest.sh: usage: [ -f filename ] | [ -d directory ]./test.sh -f index.htmlFile name is index.html
這里用到了特殊變量${1},指的是獲取命令行的第一個參數(shù)。
for循環(huán)
shell的for循環(huán)與c、php等語言不同,同Python很類似。下面是語法格式:
新聞熱點
疑難解答