GNU/Linux >> Linux の 問題 >  >> Linux

Bash:コマンド終了ステータスが 0 になるまでループする

シンプルに保つ

until nc -z 127.0.0.1 25565
do
    echo ...
    sleep 1
done

シェルに暗黙的に終了ステータスを処理させる

シェルは終了ステータスを処理できます ($? に記録されます) ) 明示的および暗黙的な 2 つの方法で。

明示的:status=$? 、これにより、さらなる処理が可能になります。

暗黙:

すべてのステートメントについて、頭の中で 、コマンドに「succeeds」という単語を追加してから、if を追加します。 、 until または while フレーズが意味を成すまで、それらの周りに構築します。

until nc 成功 ; do ...; done

-z オプションは nc を停止します stdin の読み取りから、< /dev/null の必要はありません リダイレクトします。


次のようなものを試すことができます

while true; do
    nc 127.0.0.1 25565 < /dev/null
    if [ $? -eq 0 ]; then
        break
    fi
    sleep 1
done
echo "The command output changed!"

Linux
  1. Bashコマンドラインの終了コードがわかりやすく説明されています

  2. バッシュ演算子の違い[[Vs[Vs(Vs((?

  3. 実際の例を含む Bash シェルの終了ステータスのチュートリアル

  1. bashでループの終了ステータスを取得する方法

  2. エラー:CentOS でコマンド 'gcc' が終了ステータス 1 で失敗しました

  3. コマンド 'x86_64-linux-gnu-gcc' が終了ステータス 1 で失敗しました

  1. Bashは次のコードをどのように評価しますか?

  2. ループの維持 – Bash For、While、Until ループの例

  3. bash エクスポート コマンド