Якщо функція або програма містить більше нуля аргументів, у неї завжди є останній аргумент.
Якщо ви хочете прочитати прапор опцій та пари значень, як у:
$ ./t.sh -o output -i input -l last
І ви хочете прийняти змінну кількість опцій / значень пар,
І не хочу величезного дерева "якщо .. тоді .. інше .. фі",
Потім, перевіривши наявність аргументу ненульового та парного рівня,
Напишіть цикл час з цими чотирма операторами eval як тіло, а потім випадок справи, використовуючи два значення, визначені при кожному проходженні через цикл.
Тут викладена хитра частина сценаріїв:
#!/bin/sh
# For each pair - this chunk is hard coded for the last pair.
eval TMP="'$'$#"
eval "PICK=$TMP"
eval TMP="'$'$(($#-1))"
eval "OPT=$TMP"
# process as required - usually a case statement on $OPT
echo "$OPT \n $PICK"
# Then decrement the indices (as in third eval statement)
:<< EoF_test
$ ./t.sh -o output -i input -l last
-l
last
$ ./t.sh -o output -l last
-l
last
$ ./t.sh -l last
-l
last
EoF_test