Bash - 이전 스크립트가 성공하면 하나의 스크립트를 실행하고 그렇지 않으면 다른 스크립트를 실행하시겠습니까?

Bash - 이전 스크립트가 성공하면 하나의 스크립트를 실행하고 그렇지 않으면 다른 스크립트를 실행하시겠습니까?

내 문제는 다음과 비슷하다고 생각합니다.이것하지만 추가 단계가 있습니다. 3개의 스크립트가 있다고 가정해 보겠습니다.

  1. 메인스크립트.sh
  2. 성공 보고.sh
  3. 실패 보고.sh

다음과 같이 의사코드를 어떻게 작성할 수 있습니까?

if (main_script.sh finished without error):
run report_success.sh
else:
run report_failure.sh

?

감사해요!

답변1

if main_script.sh; then
    report_success.sh
else
    report_failure.sh
fi

이는 종료 상태를 사용하여 main_script.sh성공(종료 상태 0) 또는 실패(종료 상태가 0이 아님) 여부를 확인한 다음 적절한 보고 스크립트를 실행합니다.

답변2

main_script.sh시스템이 상당히 표준적이고 성공적인 실행과 실패한 실행 모두에 대한 테스트를 통과했다고 가정하면 다음과 같이 상태를 조사 0할 수 있습니다 .1$?

./main_script.sh
if [ $? -eq 0 ]; then
    ./report_success.sh
else
    ./report_failure.sh
fi

답변3

그것은 간단합니다:

true && echo ok || echo fail

false && echo ok || echo fail

일반적인 명령은 null을 반환할 수 있습니다(예:진짜실제로) 또는 null이 아닌 값을 반환할 수도 있습니다(예:잘못된) 작업의 성공 여부에 따라 달라집니다.

./main_script.sh && ./report_success.sh || ./report_failure.sh

성공 또는 실패 시 여러 명령을 실행해야 하는 경우 중괄호를 사용하세요. 여러 스크립트가 필요하지 않습니다.

./main_script.sh && { echo ok ; echo ok2 } || { echo fail ; echo fail2 ; }

관련 정보