bashテストで複数のステートメントを実行する方法を知っている人はいますか?だから私は使用している場合:私はVar=2
を設定した場合、出力はyes-1
:bashテストごとに複数のステートメントを実行する方法&&ステートメント
[[ $Var = 1 ]] && echo "yes-1" || echo "no-1"
と出力、その後Var=1
に設定されているno-1
そしてこの作品、私は予想通り。しかし、私は、ミックスの中で実行するための別のステートメントを追加しようと、それが動作しない場合:
bashはで終わるコマンドを見て理にかなっている[[ $Var = 1 ]] && echo "yes-1";echo "yes-2" || echo "no-1";echo "no-2"
。しかし...これは私が望むものではありません。
私はグルーピングとエバールと機能を試して失敗と成功を収めましたが、私はこの作業を1行にしたいと思っています。誰にでもアイデアはありますか?
私はこのようなことを試してみましたが、 ";" 2番目のステートメントの最後に。 –
私はあなたに正しい答えを与えました。なぜなら、 ";"各ステートメントの終わりには、()サブシェルまたは{}グルーピングのいずれかで動作します。 –
IMOでは、ほとんどの場合、コマンドグループ化が優れています。例えば何かが失敗したときにスクリプトを終了したいなら、 'foocmd || {エコーfooは失敗しました。出口1。 } 'それは診断と終了を表示します。グループ化のためにサブシェルを使用すると、ほとんどの場合意図された効果ではない、サブシェル自体が終了し、sciptでは終了しません。 – JVMATL