この文字の構文エラー ||

この文字の構文エラー ||

私はこれを持っています:

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が実行されました。

関連情報