Erro de sintaxe neste caractere ||

Erro de sintaxe neste caractere ||

Eu tenho isto:

set -e
(
    (
     docker stop html2pdf
     docker rm html2pdf
    ) || { echo; }
) &

Estou apenas tentando executar esses comandos em segundo plano e ignorar se um deles falhar.

mas então recebo este erro:

/home/oleg/codes/cm/html-to-pdf/scripts/run.sh: line 13: syntax error near unexpected token `||'

Responder1

Suponho que você tenha set -eesse script porque faz parte do seu ambiente herdado.

Uma maneira fácil é apenasignorarisso na criança:

( set +e ; docker stop html2pdf ; docker rm html2pdf ) &

Agora dentro do escopo do (...)código o set -enão entra em vigor e ambos os comandos são executados.

Qualquer comando a seguir será executado automaticamente (mesmo se os dockercomandos falharem) devido ao plano de fundo da tarefa.

por exemplo

$ 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

Podemos ver os dois dockercomandos executadoseo echocomando foi executado.

informação relacionada