Skip to main content
no need to be ksh (or bash or zsh) specific to make this valuable point.
Source Link
Stéphane Chazelas
  • 585.2k
  • 96
  • 1.1k
  • 1.7k

ifif/elseelse/fifi works. Assuming bash or zshany Bourne-like shell:

cmd1 < input.txt |
cmd2 |
if [[[ -n $DEFINED"$DEFINED" ]];]; then cmd3; else cat; fi |
cmd4 |
cmd5 |
cmd6 |
(...) |
cmdN > result.txt

if/else/fi works. Assuming bash or zsh:

cmd1 < input.txt |
cmd2 |
if [[ -n $DEFINED ]]; then cmd3; else cat; fi |
cmd4 |
cmd5 |
cmd6 |
(...) |
cmdN > result.txt

if/else/fi works. Assuming any Bourne-like shell:

cmd1 < input.txt |
cmd2 |
if [ -n "$DEFINED" ]; then cmd3; else cat; fi |
cmd4 |
cmd5 |
cmd6 |
(...) |
cmdN > result.txt
Backslash not needed when last char on a line
Source Link
Thor
  • 17.5k
  • 3
  • 55
  • 71

if/else/fi works. Assuming bash or zsh:

cmd1 < input.txt |\|
cmd2 |\|
if [[ -n $DEFINED ]]; then cmd3; else cat; fi |\|
cmd4 |\|
cmd5 |\|
cmd6 |\|
(...) |\|
cmdN > result.txt

if/else/fi works. Assuming bash or zsh:

cmd1 < input.txt |\
cmd2 |\
if [[ -n $DEFINED ]]; then cmd3; else cat; fi |\
cmd4 |\
cmd5 |\
cmd6 |\
(...) |\
cmdN > result.txt

if/else/fi works. Assuming bash or zsh:

cmd1 < input.txt |
cmd2 |
if [[ -n $DEFINED ]]; then cmd3; else cat; fi |
cmd4 |
cmd5 |
cmd6 |
(...) |
cmdN > result.txt
Source Link
Thor
  • 17.5k
  • 3
  • 55
  • 71

if/else/fi works. Assuming bash or zsh:

cmd1 < input.txt |\
cmd2 |\
if [[ -n $DEFINED ]]; then cmd3; else cat; fi |\
cmd4 |\
cmd5 |\
cmd6 |\
(...) |\
cmdN > result.txt