||を使用したBashコマンドのエラーチェック - エラーチェックで2つのコマンドを実行するには?

||を使用したBashコマンドのエラーチェック - エラーチェックで2つのコマンドを実行するには?

||コマンドが正常に完了したことを確認するために演算子を使用することが機能しないことに気づきました||

以下は私のスクリプトのプレイです。 pingが返されるのを待っていて、特定の時間内に返されない場合は、2つのコマンドを実行する必要があります(実際のスクリプトにはクリーンアップ機能とクリーニング機能が2つあります)。印刷エラーと終了したエラーを組み合わせることはできません。)

/bin/bash
echo "start"
timeout 10s bash -c 'until ping -w1 -c1 1.1.1.1 >/dev/null 2>&1; do :; done' || echo "unsuc"; exit 1
echo "suc"
exit 0

私の問題は、pingが成功するとスクリプトもこれを試しexit 1ましたが、echo "unsuc" && exit 1同じ動作が発生することです。

pingコマンドが失敗した場合、どのように2つのコマンドを実行できますか?

答え1

グループコマンド(別名「リスト」)を使用してください... || { echo "unsuc" ; exit 1 ; }。例: 。

このセクションを見てman bash検索してくださいCompound Commands

または、if次のようなステートメントを使用してください。

#!/bin/bash
echo "start"
if ! timeout 10s bash -c 'until ping -w1 -c1 1.1.1.1 >/dev/null 2>&1; do :; done' ; then
  echo "unsuc"
  exit 1
fi
echo "suc"
exit 0

関連情報