나는 이것을 가지고있다:
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
실행되었습니다.