이 문자에 대한 구문 오류 ||

이 문자에 대한 구문 오류 ||

나는 이것을 가지고있다:

set -e
(
    (
     docker stop html2pdf
     docker rm html2pdf
    ) || { echo; }
) &

나는 백그라운드에서 이 명령을 실행하려고 시도하고 그 중 하나가 실패하면 무시합니다.

하지만 다음 오류가 발생합니다.

/home/oleg/codes/cm/html-to-pdf/scripts/run.sh: line 13: syntax error near unexpected token `||'

답변1

나는 set -e그것이 당신이 물려받은 환경의 일부이기 때문에 그 스크립트에 그것을 가지고 있다고 추측합니다.

간단한 방법은소홀히 하다소아의 경우:

( set +e ; docker stop html2pdf ; docker rm html2pdf ) &

이제 코드 범위 내에서는 두 명령 (...)모두 set -e적용되지 않고 둘 다 실행됩니다.

docker작업은 백그라운드에서 실행되므로 모든 후속 명령은 자동으로 실행됩니다(명령이 실패하더라도).

예를 들어

$ cat x
#!/bin/bash

set -e
( set +e ; docker stop html2pdf ; docker rm html2pdf ) &

echo hello

$ ./x
hello
$ Error response from daemon: No such container: html2pdf
Error: No such container: html2pdf

docker우리는 모두 명령이 실행되는 것을 볼 수 있습니다그리고명령이 echo실행되었습니다.

관련 정보