此字符的语法错误 ||

此字符的语法错误 ||

我有这个:

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

相关内容