GNU/Linux >> Tutoriales Linux >  >> Linux

Configuración de pipefail para un solo comando canalizado

Desde la línea de comando de Bash, necesitaría invocar una subcapa para evitar pipefail se establece después:

$ (set -o pipefail && command1 | command2 | command3)

Esto limitaría el efecto del pipefail opción a la subcapa creada por los paréntesis (...) .

Un ejemplo real:

$ (set -o pipefail && false | true) && echo pipefail inactive || echo pipefail active
pipefail active

Si usa una llamada de shell explícita con el -c opción no necesita una subcapa, ya sea con bash o con un 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

Desde tu sh no acepta el pipefail opción, tendría que asumir que es una versión más antigua o modificada de bash - o que en realidad es otro caparazón por completo.


No estoy seguro de por qué no se mencionó anteriormente, pero es posible desactivar explícitamente pipefail , usando set +o pipefail .

set -o pipefail
command1 | command2 | command3
set +o pipefail

Si está ejecutando un fragmento y no está seguro del pipefail ya configurado, puede usar esto con el subshell como se sugirió anteriormente:

# explicitly execute with pipefail set
(set -o pipefail ; command1 | command2 | command3 )
# explicitly execute with pipefail unset
(set +o pipefail ; command1 | command2 | command3 )

Linux
  1. ¿Cómo hacer un conjunto completo de posibilidades para definir los "caracteres de comando" de Gnu-screen?

  2. ¿Cómo deshabilitar un alias en Bash para un solo comando?

  3. ¿Cómo ejecutar la aplicación durante un tiempo determinado en Shell?

  4. Configuración del color de fondo en gvim

  5. ¿Cómo configuro un nick predeterminado para nuevas conexiones irssi?

12 ejemplos de comandos IP para usuarios de Linux

Comando de cambio de Linux para establecer la caducidad de la contraseña para el usuario

Instale el subsistema de Windows para Linux con un solo comando

Exa:un reemplazo moderno para ls Command

¿Envolviendo un comando que incluye comillas simples y dobles para otro comando?

Establecer contraseña para el modo de usuario único en Linux (CentOS/RHEL)