条件付きでvarを割り当て、定義と条件を確認してください。

条件付きでvarを割り当て、定義と条件を確認してください。

条件付きで変数を割り当てたい。

これはうまくいきません

[[ -v $2]] && [$2 == "init" ] && command="./ops/init.sh"
[[ -v $2]] && [$2 == "destroy" ] && command="./ops/teardown.sh"
[ -z "${2}" ] && command="./ops/help.sh -h"

パラメータとは異なる条件が存在するかどうかを確認しようとしていますが、構文が正しくわかりません。

ベストアンサー1

最初のもの-vはzsh拡張なので、問題はスクリプトを実行している間違ったシェルかもしれません。

これを書くための一般的な方法は、Caseステートメントを使用することです。

case "$2" in
    ("init") command="./ops/init.sh" ;;
    ("destroy") command="./ops/teardown.sh" ;;
    ("") command="./ops/help.sh -h" ;;
    (*) echo "$0: unknown option '$2' - expecting 'init' or 'destroy'" >&2
        exit 2 ;;
esac

複数の単語を文字列に入れることは最善のアイデアではありませんが、そうする必要はありません./ops/help.sh -h(そして最初はシェルに対して選択肢はありません)。代わりに配列の使用を検討してください。

おすすめ記事