Как отправить вывод филиала, если в трубу - PullRequest
1 голос
/ 02 мая 2020

с этим сценарием:

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

Вопрос в том, что я не хочу дублировать a lot of commands после первой записи в pipe, но запись получена из ветви (getopts return 0 или 1). Я хочу что-то вроде grep ${i:-defauloption} | ..., и defaultoption зависит от результата ветвления - то есть вставлять ветку перед передачей по конвейеру, а не дублировать a lot of commands с else ветвью, но только без опции (дублированный код). Можно ли как-то избежать дублирования?

Ответы [ 2 ]

3 голосов
/ 02 мая 2020

Попробуйте с

if getopts "i" i; then
  grep -i 
else
  grep
fi | a lot of commands
2 голосов
/ 02 мая 2020

Сохранить переменную часть в переменной.

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