10

我有一些我想在 OSX 中运行的 bash 脚本,但其中一些包含失败的大小写终止符 ';&' 这似乎不适用于 Mac。这是示例代码:

#!/bin/bash
case $1 in
    test)
        echo "go" ;&    
    test)
        echo "go2" ;;
esac

在 Cygwin 中, .\test.sh 测试产生

go
go2

但在 OSX 上,

./test.sh: line 4: syntax error near unexpected token `&'
./test.sh: line 4: `            echo "go" ;&   
4

2 回答 2

6

您的代码在我的 ubuntu 系统 bash 4.2.24 上可以正常工作。

我认为您使用的是早期版本的 bash,它不支持;&自 bash 4 以来添加的 fall-through。

来自维基百科

Fall through is done using ;& (new since Bash 4) whereas ;; acts as a case break.
于 2013-01-30T20:07:28.790 回答
4

也许您可以尝试使用/bin/zsh而不是/bin/bash?您的示例代码适用于“zsh 4.3.9”,但不适用于我的 MacOS X 10.6.8 上的“bash 3.2.48”。

否则,脚本必须以某种方式重写……但如果不知道它做了什么,就很难确切地说出如何。根据需要简单地复制代码可能是最简单的选择,并且应该适用于所有情况。

于 2013-01-30T21:29:20.097 回答