編集する:もう一度試しましたが、今はうまくいきますbash
。何が変わったのかわかりません。私のエディタ(Bash IDE拡張を含むVS Code)でまだfailed to parse
エラーが発生しますが、スクリプトは正しく実行されます。この質問を削除する必要がありますか?
元の質問
私のスクリプトは現在、次のことを行います。
if cmd1; then
echo Success
else
if [[ "$x" == "z" ]] && cmd2; then
echo Success
else
echo Failure
fi
fi
続けて「一行」に減らそうとしますが、bash
次のような言葉で喉が詰まります。
if cmd1 || { [[ "$x" = "z" ]] && cmd2; }; then
echo Success
else
echo Failure
fi
それ以外の場合は常に実行される{ grouping }
ため、これが必要だと思います。&& cmd
この問題をどのように解決できますか?
ベストアンサー1
サブシェルを使用してグループ化できます。
if cmd1 || ( [[ "$x" == 'z' ]] && cmd2 ); then
...
else
...
fi