此字元的語法錯誤 ||

此字元的語法錯誤 ||

我有這個:

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運行了。

相關內容