我如何在OSX中的bash case语句中落实?

tof*_*tim 9 macos bash

我有一些bash脚本,我想在OSX中运行,但其中一些包含fallthrough案例终结符';&',它似乎不适用于Mac.这是示例代码:

#!/bin/bash
case $1 in
    test)
        echo "go" ;&    
    test)
        echo "go2" ;;
esac
Run Code Online (Sandbox Code Playgroud)

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

go
go2
Run Code Online (Sandbox Code Playgroud)

但是在OSX上,

./test.sh: line 4: syntax error near unexpected token `&'
./test.sh: line 4: `            echo "go" ;&   
Run Code Online (Sandbox Code Playgroud)

P.P*_*.P. 5

您的代码在我的ubuntu系统上工作,bash 4.2.24.

我认为你使用的是早期版本的bash,它不支持;&从bash 4开始添加的直通.

来自维基百科:

Fall through is done using ;& (new since Bash 4) whereas ;; acts as a case break.
Run Code Online (Sandbox Code Playgroud)

  • Mac OS X 10.7 Lion和10.8 Mountain Lion包括`bash` 3.2.48,而不是'bash` 4.x,因此不支持直通. (3认同)