如果我有一個腳本(bash shell)並且想要檢查傳遞的參數是否在一個數字範圍內,我將如何使用case語句來執行此操作?例如,只有輸入的參數是數字10-20,我的腳本纔會執行一系列命令,否則會返回錯誤消息。我可以用If語句做到這一點,但想知道如何使用case語句。我讀過其他網頁,但它沒有意義的事情:使用case語句驗證變量
case $1 in
10
*command executed
11
*command executed
etc...
如果我有一個腳本(bash shell)並且想要檢查傳遞的參數是否在一個數字範圍內,我將如何使用case語句來執行此操作?例如,只有輸入的參數是數字10-20,我的腳本纔會執行一系列命令,否則會返回錯誤消息。我可以用If語句做到這一點,但想知道如何使用case語句。我讀過其他網頁,但它沒有意義的事情:使用case語句驗證變量
case $1 in
10
*command executed
11
*command executed
etc...
試着這樣做:
if (($1 >= 10 && $1 <=20)); then
echo "Correct range"
else
echo >&2 "Incorrect range"
fi
我用bash arithmetic。這裏使用case
聲明似乎有點低效。
如果你堅持這樣做絲毫case
:
case $1 in
1[0-9]|20) echo "Correct range" ;;
*) echo >&2 "Incorrect range" ;;
esac
您可以使用方括號來表示可能值的列表:
case $1 in
1[0-9]|20)
echo "All is well. I will run the command."
;;
*)
echo "All is not well! You are a fool to tell me such a number!"
;;
esac
查看更多有關case語句in the Bash Beginner's Guide
使用$((...))
也許有用:
case 1 in
$(($1 >= 10 && $1 < 20))) echo '10-19';;
$(($1 >= 20 && $1 < 30))) echo '20-29';;
$(($1 >= 30 && $1 < 40))) echo '30-39';;
esac
這兩個建議工作,謝謝! – swam 2014-12-02 06:50:40