我正在使用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有另一个好的选择,或者我必须在每个函数的末尾执行下一个函数......
答案 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