bash - 级联案例陈述? (v.3.2.51)

时间:2014-10-20 14:33:17

标签: bash case

我正在使用bash版本3.2.51。我的脚本需要一个函数来进入主函数的不同步骤,并继续执行所选步骤之后的其他步骤。

我尝试了以下内容:

case $variable in
 1)
   function1
   ;&
 2)
   function2
   ;&
 *)
   function3
   ;;
esac

我用过;&终结器,所以我的脚本以后执行语句,而不检查它们。但经过一些研究,我发现由于我没有bash版本4,我得到以下语法错误:

./script.sh: line 223: syntax error near unexpected token `;'
./script.sh: line 223: `            ;&'

第223行与上面文本框中的第7行相同。

所以我的问题是,如果bash 3有另一个好的选择,或者我必须在每个函数的末尾执行下一个函数......

2 个答案:

答案 0 :(得分:2)

;& 4中引入了{p> bash;你不能在早期版本的bash中使用它。你必须明确:

case $variable in
 1)
   function1
   function2
   function3
   ;;
 2)
   function2
   function3
   ;;
 *)
   function3
   ;;
esac

您可以使用一系列if语句(或更简洁,一系列&&列表):

(( variable <= 1 )) && function1
(( variable <= 2 )) && function2
(( variable <= 3 )) && function3

答案 1 :(得分:0)

另一种选择:

if [ $variable -eq 1 ]; then function1; fi
if [ $variable -gt 0 ] && [ $variable -le 2 ]; then function2; fi
function3
相关问题