私はこれを持っています:
set -e
(
(
docker stop html2pdf
docker rm html2pdf
) || { echo; }
) &
私はバックグラウンドでこのコマンドを実行しようとし、そのうちの1つが失敗した場合は無視します。
ただし、次のエラーが発生します。
/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
実行されました。