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

스크립트를 분석합니다. 일반적으로 잘 작성된 응용 프로그램은 성공적으로 완료되면 0 종료 코드로 종료되고 그렇지 않으면 0이 아닌 종료 코드로 종료됩니다. 귀하의 경우 응용 프로그램 다시 시작을 진행하기 위해 Until 명령을 사용하고 있습니다.

java <lot of java params> 

애플리케이션이 성공적으로 실행을 완료할 때까지(종료 코드 0).

관련 정보