2014-12-07 67 views
-1

如何防止在以下代码中运行*)(与echo "Other")?案件陈述中断

我想当$a等于18只是回声“A”。现在回声 “A” 和 “其他”

case "$a" in 

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

无法复制,因为 “A” 不打印。毫不奇怪,因为这不是字符范围的工作方式。 – 2014-12-07 09:03:24

回答

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