【发布时间】:2011-07-30 13:18:18
【问题描述】:
我正在寻找 switch 语句的正确语法,在 Bash 中具有失败的情况(理想情况下不区分大小写)。 在 PHP 中我会这样编程:
switch($c) {
case 1:
do_this();
break;
case 2:
case 3:
do_what_you_are_supposed_to_do();
break;
default:
do_nothing();
}
我希望在 Bash 中也一样:
case "$C" in
"1")
do_this()
;;
"2")
"3")
do_what_you_are_supposed_to_do()
;;
*)
do_nothing();
;;
esac
这在某种程度上不起作用:函数 do_what_you_are_supposed_to_do() 应该在 $C 为 2 OR 3 时触发。
【问题讨论】:
-
不要使用带括号的调用函数!!!由于您可以使用
function fname { echo "Inside fname"; return 0; }或fname() { echo "inside fname"; return 0; }在bash 中定义函数,因此在函数调用上放置括号看起来就像是函数定义。函数应该像任何其他命令行程序一样被调用,例如mv、cp、rsync、ls、cd等......在这种情况下,我们像这样调用 fname:fname $ARGS。 -
do_nothing()应该是 SKIP 语句吗?使用:。
标签: bash switch-statement