Bashは同時に複数の変数を処理します。

Bashは同時に複数の変数を処理します。

次のように複数の変数を同時に処理する方法があるかどうか疑問に思います。

#/bin/bash
arr1=(1 2)
arr2=(3 4)
foo=1
bar=2

case $foo && $bar in
    ${arr1[@]})
        echo "variables equal array 1!";;
    ${arr2[@]})
        echo "variables equal array 2!";;
    *)
        echo "variables do not exactly equal any array!";;
esac

$foo合計$bar自体を配列に入れたくありませんが、必要な場合はそうすることができます。

ベストアンサー1

IFSデフォルト値が変更されていないとします。

case "$foo $bar" in
"${arr1[*]}") echo "variables equal array 1!" ;;
"${arr2[*]}") echo "variables equal array 2!" ;;
*) echo "variables do not exactly equal any array!" ;;
esac

これは、各配列に格納されている個々の値に区切り文字(スペース)がない場合にのみ信頼できます。

おすすめ記事