Синтаксическая ошибка в этом символе ||

Синтаксическая ошибка в этом символе ||

У меня есть это:

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была выполнена.

Связанный контент