Bash: "&"를 사용하여 백그라운드에서 스크립트를 실행하고 "||"를 사용하여 실패 시 다른 것을 실행하는 방법은 무엇입니까?

Bash: "&"를 사용하여 백그라운드에서 스크립트를 실행하고 "||"를 사용하여 실패 시 다른 것을 실행하는 방법은 무엇입니까?

백그라운드에서 명령을 실행하려고 하지만 첫 번째 명령이 실패하면 "||"를 사용하여 다른 명령을 실행합니다. 예:

$( <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
...

관련 정보