我有一些bash脚本,我想在OSX中运行,但其中一些包含了fallthrough案例终结符';&'这似乎不适用于Mac。这是示例代码:
#!/bin/bash
case $1 in
test)
echo "go" ;&
test)
echo "go2" ;;
esac
在Cygwin中,。\ test.sh test生成
go
go2
但是在OSX上,
./test.sh: line 4: syntax error near unexpected token `&'
./test.sh: line 4: ` echo "go" ;&
答案 0 :(得分:5)
您的代码在我的ubuntu系统上工作,bash 4.2.24。
我认为您使用的是早期版本的bash,它不支持自bash 4以来添加的;&
版本。
来自wikipedia:
Fall through is done using ;& (new since Bash 4) whereas ;; acts as a case break.
答案 1 :(得分:2)
也许您可以尝试使用/bin/zsh
代替/bin/bash
?您的示例代码在我的MacOS X 10.6.8上使用“zsh 4.3.9”而不是“bash 3.2.48”。
否则,必须以某种方式重写脚本......但是如果不知道它的作用,很难确切地说出来。简单地根据需要复制代码可能是最简单的选择,并且应该适用于所有情况。