GNU/Linux >> Tutoriales Linux >  >> Linux

¿Incluir condicionalmente una etapa de tubería en un script Bash?

Esta pregunta ya tiene respuestas aquí :Pipeline condicional

(7 respuestas)
Cerrado hace 3 años.

Tengo un script como el siguiente:

flag=false
# Do a bunch of stuff that might set flag to true.
if [[ "$flag" == "true" ]]; then
   command \
       | pipe_command_a \
       | pipe_command_b \
       | pipe_command_c \
       | pipe_command_d \
       > "${output_path}"
else
   command \
       | pipe_command_a \
       | pipe_command_c \
       | pipe_command_d \
       > "${output_path}"
fi

La única diferencia entre flag siendo true o false hace es que pipe_command_b no se puede ejecutar. ¿Hay alguna manera de colapsar esto para que no tenga que repetir todas las cosas comunes?

Respuesta aceptada:

Usa cat en lugar del comando si desea omitirlo:

command=cat
if [[ $flag == true ]] ; then
    command=pipe_command_b
fi
command \
    | pipe_command_a \
    | $command       \
    | pipe_command_c

Linux
  1. ¿Se puede conectar un script Bash a un archivo?

  2. Typeset -a ¿Está dando un error en el script?

  3. Cómo dividir una cadena en Bash Script

  4. Canalizar hacia/desde el portapapeles en el script Bash

  5. Ejecutar script bash desde URL

35 ejemplos de secuencias de comandos Bash

Cómo ejecutar un script Bash

Bash Script para Center Fortune/texto de Stdin/pipe?

Ejecutar script bash como demonio

Agregue un script bash a la ruta

Ejecute el comando bash en la canalización de jenkins