2017-02-23 58 views
0

我想轉換一堆,如果/別人的情況下聲明,但我有問題設置此規則:案例讀取輸入參數是特定的字母或任意數量的

./overload.sh k --> input valid (already done) 
./overload.sh c --> input valid (already done) 
./overload.sh (any range of number) --> input valid (dont know how to do) 
./overload.sh (exception) --> input invalid and error message (already done) 

我不不知道如何讓案例理解爲接受任何數字作爲有效選項或k或c,而其他任何輸入都是例外。

回答

3

如果打開的延長圖案,可以匹配號碼作爲一個字符串包含數字僅僅:

shopt -s extglob 
case "$1" in 
    k) echo "Got k" ;; 
    c) echo "Got c" ;; 
    +([[:digit:]])) echo "Got a number" ;; 
    *) echo "Invalid input: $1" ;; 
esac 

+(...)匹配一個或多個的任何模式是內部;它相當於正則表達式(...)+。在這裏,...是字符類[:digit:],它匹配在當前語言環境中認爲是數字的任何字符(通常爲[0-9])。

+0

完美chepner,即使我沒有把任何參數,它很好地運行異常,謝謝! – bgomes06