コマンドの実行が成功したら監視を中止できるようにしたいです。実際、私はを通じて提供されたものとは反対の動作を探しています--errexit
。人によると:
-e
、--errexit
コマンドエラーが発生した場合は、アップデートを停止してキーを押して終了します。
はい
注文する:
ping -c 3 www.google.com
不完全な接続で失敗しました*。次の方法で再実行して、接続が再開されたことを確認できます。
watch -n 1 'ping -c 3 www.google.com'
ping
実行がエラーなく進む場合は、視聴を中止したいと思います。
*接続を確認するより良い方法を探しているわけではありません。これらのping
例は、電話信号が頻繁に切断される電車で携帯電話接続を使用することから来ています。
答え1
ネットワーク接続が復元されると、ping の受信を開始するので、切断watch
後に開始し、出力が変更された後に終了するように指示します。
watch -g -n 1 ping -c 3 www.google.com
卓球ボールを受け取り始めると時計が終了します。
答え2
より一般的な回避策は、次のコマンドを使用してコマンドの終了コードを元に戻すことができます。!
:
# Never terminates
watch --errexit echo "test"
# Terminates on first invocation
watch --errexit ! echo "test"
これはすべてのPOSIXシェル、特にbashとzshで動作します。