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

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

나는 이것을 가지고있다:

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이 실행되었습니다.

관련 정보