
У меня есть это:
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
была выполнена.