Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

118
Visualizações
función bash set -e con tubos dobles

¿Alguien podría explicar este comportamiento? me parece raro

 #!/bin/bash set -e _func() { cat non-existant-file return 0 } _func || echo "Not seen since _func returned zero" _func echo "Not seen since _func returned non-zero"

salida (GNU bash, versión 4.3.42(1)-release (x86_64-pc-linux-gnu) ):

 $ bash func.sh cat: non-existant-file: No such file or directory cat: non-existant-file: No such file or directory $
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Si observa la página de manual de bash, menciona específicamente esto:

En particular The shell does not exit if the command that fails is part of [...] any command executed in a && or || list except the command following the final && or || [...]

Este comportamiento es exactamente como está documentado/previsto.

Puedes ver esto por ti mismo si ejecutas algo como esto:

 #!/bin/bash set -ex # set -x will tell you exactly where the shell exits. _func() { cat non-existant-file return 0 } #_func || echo "Not seen since _func returned zero" cat non-existant-file || _func _func echo "Not seen since _func returned non-zero"

De la página de manual:

 set -e Exit immediately if a pipeline (which may consist of a single simple command), a list, or a compound command (see SHELL GRAMMAR above), exits with a non-zero sta‐ tus. The shell does not exit if the command that fails is part of the command list immediately following a while or until keyword, part of the test following the if or elif reserved words, part of any command executed in a && or || list except the command following the final && or ||, any command in a pipeline but the last, or if the command's return value is being inverted with !. If a compound command other than a subshell returns a non-zero status because a command failed while -e was being ignored, the shell does not exit. A trap on ERR, if set, is executed before the shell exits. This option applies to the shell environment and each subshell envi‐ ronment separately (see COMMAND EXECUTION ENVIRONMENT above), and may cause subshells to exit before executing all the commands in the subshell.

Que es exactamente el caso que tienes aquí.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda