Na linha de comando do Bash, você precisaria invocar um subshell para evitar que pipefail
fosse definido posteriormente:
$ (set -o pipefail && command1 | command2 | command3)
Isso limitaria o efeito da opção pipefail
à subshell criada pelos parênteses (...)
.
Um exemplo real:
$ (set -o pipefail && false | true) && echo pipefail inactive || echo pipefail active
pipefail active
Se você usar uma chamada explícita do shell com a opção -c
, não precisará de um subshell, seja com bash
ou com um sh
alias para bash
:
$ bash -c "set -o pipefail && false | true" && echo pipefail inactive || echo pipefail active
pipefail active
$ sh -c "set -o pipefail && false | true" && echo pipefail inactive || echo pipefail active
pipefail active
Como o seu sh
não aceita a opção pipefail
, eu teria que assumir que é uma versão antiga ou modificada do bash
- ou que é realmente algum outro shell completamente.