4

次のbashコードで長いvalueX文字列を分割するにはどうすればよいですか?

case "$1" in
    value1|value2|value3|...........more values..................| valueN)
        some_processing "$@"
        ;;
    ...
esac

別々の行に分割することを探しています。Mbのような:

VAL+=value1
VAL+=value2
....
4

1 に答える 1

11

マニュアルページから:

case コマンドは最初に単語を展開し、パス名の展開と同じ一致ルールを使用して、各パターンと順番に一致させようとします[.]

つまり、正規表現ではなくグロブ パターンです。そのため、パターン トークン間で IFS を使用できます。例えば:

case "$1" in
    value1 | \
    value2 )
        :
    ;;
esac

パイプ記号が自動的に行を継続する通常の場合とは異なり、バックスラッシュで行継続をエスケープする必要があることに注意してください。それ以外は、プロンプトと同じ方法で行を分割できます。

于 2012-06-04T16:25:36.310 に答える