1 if
#!/bin/bashecho "Please chose your favourite fruit:";select fruit in "apple" "orange" "banana" "none";dobreak;done;if [ $fruit == "apple" ] then echo "you like apple!"elif [ $fruit == "orange" ] then echo "you like orange!"elif [ $fruit == "banana" ] then echo "you like banana!"else echo "you dont like all this!"fi
注意:
1
if [ $fruit == "apple" ] then echo "you like apple!"
這個每一句話後面都可以加 ; ,加上 ; 後的好處是,這兩句話都寫到一行裡也不會有錯誤。
但是還是習慣空行比較好,空行後,就不用加 ; 也OK 拉~~
2
if 與 [ 之間要空格。。。。
[ 與後面那個字元之間也要空格, ] 與前面那個字元之間也要空格。。。
3
select fruit in "apple" "orange" "banana" "none"
do
break
done
這個是選擇的,輸入數字選擇,然後變數 fruit = apple 了。。。
root@vivi-Ideapad-Z460:~# ./myshell.sh
Please chose your favourite fruit:
1) apple
2) orange
3) banana
4) none
#? 2
you like orange!
===================
嵌套:
if [ commond ]
then if [ commond2 ]
then doSomething
fi
fi
====================================================================================\
2 case
在shell中的case同C/C++中的switch結構是相同的.它允許通過判斷來選擇代碼塊中多條路徑中的一條。
case"$variable" in
"$condition1")
command...
;;
"$condition1")
command...
;;
esac
注意:對變數使用""並不是強制的,因為不會發生單詞分離.
每句測試行,都以右小括弧)結尾.
每個條件塊都以兩個分號結尾;;.
case塊的結束以esac(case的反向拼字)結尾。
#!/bin/bashecho "Please chose your favourite fruit:"select fruit in "apple" "orange" "banana" "none"dobreakdonecase "$fruit" in"apple") echo "you like apple!";;"orange") echo "you like orange!";;"banana") echo "you like banana!";;"other")echo "you dont like all this!";;esac
對變數不使用"" 變數顏色看著不舒服。。。
每個條件塊都以兩個分號結尾;; ========這個我沒有,貌似沒有報錯。。。
root@vivi-Ideapad-Z460:~# ./myshell.sh
Please chose your favourite fruit:
1) apple
2) orange
3) banana
4) none
#? 3
you like banana!