2014-12-07 2 views
-1

Как я могу предотвратить запуск *)echo "Other") в следующем порядке?Перерыв для заявления о случаях

Я хочу, когда $a равен 18 просто эхо "А". Теперь эхо «А» и «Другой»

case "$a" in 

[17-20]) 
    echo "A" 
    ;; 
*) echo "Other" 
    ;; 
esac 
+0

не может дублировать, так как "А" не печатается. Не удивительно, так как это не так, как работают диапазоны символов. –

ответ

2

Вы можете использовать это:

case "$a" in 
    1[789])  # range 17-19 
    echo "A" 
    ;; 
    20)   # only 20 
    echo "A" 
    ;; 
    *) 
    echo "Other" 
    ;; 
esac 

укороченная версия:

case "$a" in 
    1[7-9]|20)  # range 17-19 and 20 
    echo "A" 
    ;; 
    *) 
    echo "Other" 
    ;; 
esac 
1

case не знает о диапазонах и принимает только узоры.

Вместо этого вы можете использовать if ... else.

if ((a>=17 && a<=20)); then 
    echo "A" 
else 
    echo "Other" 
fi 
Смежные вопросы