||
コマンドが正常に完了したことを確認するために演算子を使用することが機能しないことに気づきました||
。
以下は私のスクリプトのプレイです。 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