不是你實際詢問的問題,但是...你告訴用戶輸入「是」或「否」,但只測試y或n - 當然,你給了他們一個提示,但用戶是暗示性的。因此,也許一個更寬鬆的測試是爲了:
echo "Please enter yes or no (y/n)"
read string
case "$string" in
[yY]* | [nN]*) echo "User entered $string" ;;
*) echo "I don't understand '$string'" ;;
esac
這會認識到,與Y或N開頭的任何變化 - 通常這是夠好,但你可以收緊測試。此外,由於你可能會想要做的事用yes或no的反應可以展開的情況下(我也收緊在這一個測試)不同:
case "$string" in
[yY] | [yY][eE][sS]) echo "Here's where you process yes" ;;
[nN] | [nN][oO]) echo "And here you deal with no" ;;
*) echo "I don't understand '$string'" ;;
esac
你可以用if語句做到這一點但是如果有兩種以上的選擇方案,並且測試適用於大小寫語法,我發現案例更具可讀性。
'if [「$ string」=「y」-o「$ string」=「n」]' – Erik 2013-04-04 09:07:53
@Erik發佈它作爲答案。 – Barmar 2013-04-04 09:10:30
@Erik請發表回覆,以便我可以將其標記爲已解決。 – bsmoo 2013-04-04 09:14:49