Я пишу программу bash, которая принимает параметры.
Например: ./my_program -l 3 -a -s
-l 3
ограничит вывод тремя строками -a
выберет весь мой файл -s
отсортирует вывод
На данный момент я мог бы использовать два варианта одновременно таким образом:
if [ $all == 1 ]
then
if [ $sort == 1 ]
then
printf '%s\n' "${haikus[@]}" | sed -e 's/^[ \t]*//' | sort
else
printf '%s\n' "${haikus[@]}" | sed -e 's/^[ \t]*//'
fi
fi
Если опция -a
, я печатаю весь файл, или, если опция -a
и опция -s
, я использую ту же команду, но я использую sort
.
С этим решением,если я захочу реализовать -l
, это создаст много операторов if.
Сначала я подумал о создании переменной, содержащей мою команду.
Пример:
sort='sort'
limit='grep -m3'
и затем напишите мою команду следующим образом:
printf '%s\n' "${haikus[@]}" | sed -e 's/^[ \t]*//' | $sort | $limit
Но это просто не работает.
Дело в том, что я хотел бы написать основную команду и бытьвозможность добавить к этому больше, в зависимости от опций.
Как я могу сделать это правильно без тонны операторов "if"?