GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Eine Pipe-Stufe bedingt in ein Bash-Skript einschließen?

Für diese Frage gibt es hier bereits Antworten :Bedingte Pipeline

(7 Antworten)
Vor 3 Jahren geschlossen.

Ich habe ein Skript wie das folgende:

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

Der einzige Unterschied zwischen flag true sein oder false macht ist das pipe_command_b dürfen nicht ausgeführt werden. Gibt es eine Möglichkeit, dies zu reduzieren, sodass ich nicht alle üblichen Dinge wiederholen muss?

Akzeptierte Antwort:

Verwenden Sie cat anstelle des Befehls, wenn Sie ihn überspringen möchten:

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

Linux
  1. Wie debuggt man ein Bash-Skript?

  2. Bash-Skript zum Ausfüllen einer Vorlage?

  3. Wie werden Parameter eingestellt, wenn Bash-Skript an Bash übergeben wird?

  4. In Bash-Skript zur/von der Zwischenablage leiten

  5. Alternativen --config Java-Bash-Skript

35 Bash-Skriptbeispiele

So führen Sie ein Bash-Skript aus

Kann ein Bash-Skript mit einer Datei verknüpft werden?

Typeset -a Gibt Fehler im Skript an?

Bash-Skript zum Zentrieren von Fortune/Text von Stdin/Pipe?

Führen Sie den Bash-Befehl auf der Jenkins-Pipeline aus