내 문제는 다음과 비슷하다고 생각합니다.이것하지만 추가 단계가 있습니다. 3개의 스크립트가 있다고 가정해 보겠습니다.
- 메인스크립트.sh
- 성공 보고.sh
- 실패 보고.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 ; }