10

OSX で実行したい bash スクリプトがいくつかありますが、それらの一部にはフォールスルー ケース ターミネータ ';&' が含まれており、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" ;&   
4

2 に答える 2

6

あなたのコードは私のubuntuシステム、bash 4.2.24でそのまま動作します。

;&bash 4 以降に追加されたフォールスルーをサポートしていない以前のバージョンの bash を使用していると思います。

ウィキペディアから:

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ますか?サンプルコードは「zsh4.3.9」で動作しますが、MacOSX10.6.8では「bash3.2.48」では動作しません。

そうでなければ、スクリプトは何らかの方法で書き直さなければなりません…しかし、それが何をするのかを知らずに正確にどのように言うのは難しいです。必要に応じてコードを単純に複製するのがおそらく最も簡単なオプションであり、すべての場合に機能するはずです。

于 2013-01-30T21:29:20.097 に答える