백그라운드에서 명령을 실행하려고 하지만 첫 번째 명령이 실패하면 "||"를 사용하여 다른 명령을 실행합니다. 예:
$( <run-this-in-background> & || <run-this-if-failed>)
하지만구문 오류가 발생합니다.:
command substitution: line 15: syntax error near unexpected token `||'
정확한 내용은 다음과 같습니다.
$(./temptwo.sh & || rc=$?)
내 전체 코드는 다음과 같습니다. rc=$?
다음 줄에서 이 작업을 수행할 수 있으면 조금 이상해 보이지만 우리는 로거를 사용하고 있으며 $?로 종료되는 줄이 있으면 프로그램이 종료됩니다. != 0이므로 이 문제에 대한 해결책은 "0"으로 종료되지만 반환 코드도 제공하는 "./someCommand || rc=$?"를 사용하는 것입니다.
#default success code:
rc=0
#run temptwo.sh in the background. If it fails, set rc=$?
$(./temptwo.sh & || rc=$? )
#Trying to get the process id of "temptwo.sh" below (not sure if works)
pid=$!
#Wait until the process finishes
wait $pid
답변1
/temptwo.sh & pid=$! ; wait $pid || rc=$?
하지만 IMHO는 그다지 의미가 없습니다.
/temptwo.sh & pid=$! ; wait $pid ; rc=$?
if [ "$rc" -gt 0 ]; then
...