2014-12-02 93 views
1

如果我有一個腳本(bash shell)並且想要檢查傳遞的參數是否在一個數字範圍內,我將如何使用case語句來執行此操作?例如,只有輸入的參數是數字10-20,我的腳本纔會執行一系列命令,否則會返回錯誤消息。我可以用If語句做到這一點,但想知道如何使用case語句。我讀過其他網頁,但它沒有意義的事情:使用case語句驗證變量

case $1 in 
10 
*command executed 
11 
*command executed 
etc... 

回答

4

試着這樣做:

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 
2

您可以使用方括號來表示可能值的列表:

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

+0

這兩個建議工作,謝謝! – swam 2014-12-02 06:50:40

1

使用$((...))也許有用:

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