如何将分支的输出发送到管道

How to send ouput of branch if to pipe

有这个脚本:

if getopts "i" i; then
  grep -i | a lot of commands
else
  grep | a lot of commands
fi

问题是,我不想在第一次进入管道后复制 a lot of commands,但该条目来自分支(无论是 getopts return 0 还是 1) .我想要 grep ${i:-defauloption} | ... 之类的东西,而 defaultoption 取决于分支结果 - 即在管道之前嵌入分支,而不是用 else 分支复制 a lot of commands,但只是没有选项(重复代码)。是否有可能以某种方式避免重复?

试试

if getopts "i" i; then
  grep -i 
else
  grep
fi | a lot of commands

将可变部分存储在变量中。

if getopts "i" i; then
  myoptions="-i"
fi
grep ${myoptions} | a lot of commands