Bashスクリプトから「$ @まで」は正確にどのように機能しますか?

Bashスクリプトから「$ @まで」は正確にどのように機能しますか?

最近、Javaアプリケーションは次のように起動されたホストを取得しました。

/bin/bash ./restarter.sh java <lot of java params>

アプリケーションがシャットダウンしたときにrestarter.sh再実行されることを保証します。

以下の内容がありますrestarter.sh

#!/bin/bash
until "$@"; do
  echo "Server crashed with exit code $?.  Respawning.." >&2
  sleep 1
done

どのように動作するかを理解するのに役立ちます。

答え1

これは、コマンド(「$ @」)が実行を完了し、コード0で終了するまで繰り返すことを意味します。

例:

$ until (echo Myprog ; sleep 1; exit 1;); do echo Error respawning ...; done
Myprog
Error respawning ...
Myprog
Error respawning ...
Myprog
^C

$ until (echo Myprog ; sleep 1; exit 0;); do echo Error respawning ...; done
Myprog

スクリプトを分析します。 通常、よく書かれたアプリケーションは、正常に完了するとゼロ終了コードで終了し、そうでなければゼロ以外の終了コードで終了します。あなたの場合は、アプリケーションの再起動を続行するためにUntilコマンドを使用しています。

java <lot of java params> 

アプリケーションが正常に実行を完了するまで(終了コード0)。

関連情報