Incluir condicionalmente um estágio de pipe em um script bash [duplicado]

1

Eu tenho um script como o seguinte:

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

A única diferença entre flag sendo true ou false é que pipe_command_b pode não ser executado. Existe uma maneira de reduzir isso para que eu não precise repetir todas as coisas comuns?

    
por Hounshell 03.08.2017 / 19:38

1 resposta

2

Use cat em vez do comando se você quiser ignorá-lo:

command=cat
if [[ $flag == true ]] ; then
    command=pipe_command_b
fi
command \
    | pipe_command_a \
    | $command       \
    | pipe_command_c
    
por 03.08.2017 / 19:41