Описание тега bahamas
Я пытаюсь построить программу с 2-х режимах, каждый режим использует другой набор аргументов. Я пытался реализовать вложенные операторы Case как описано по @geekosaur в здесь, в случае "$1"
переживает режимов и Дело "$2"
переживают аргументов.
У меня вообще --помогите
вариант для программы, описывающие способы, которые доступны, и отдельное - помощь
для каждого режима, описывающих аргументы.
Если я запускаю:
./program.sh --помочь
работает
./program.sh режим1-помощь
работает
./program.sh режим 1-не
работает (это правильно ловит неизвестный параметр и вызовов использование функции для режим1)
Тем не менее:
./режим1 program.sh --Вариант1 файл
Ошибка: неизвестный параметр файл
Т. е., он распознает файл "" в качестве параметра, а не значение ключа "блок1".
Как я могу сделать эту работу? Я возиться с моей "смены", или мне нужно вложенных циклов?
(Только показывает "режим 1" в коде ниже для простоты)
#!/бин/Баш
usage_general() {
Эхо "использование: Имя_программы [мод]"
Эхо ""
функции printf "%-10С %з\п" "режим1" "выполнить подпрограмму 1".
функции printf "%-10С %з\п" "режим2" "выполнить подпрограмму 2".
}
usage_mode1() {
Эхо "использование: Mode1 и nbsp; Имя_программы [варианты]"
Эхо ""
с printf "%-10С %з\п" "-1 | --блока1" "АРГ 1 для режим1"
функции printf "%-10С %з\п" "-2 | --параметр2" "Арг 2 для режим1."
}
во время [[ $# -gt 0 не ]]
делать
дело "$1" в
-ч | --помощь)
usage_general
выход
;;
режим1)
дело "$2" в
-ч | --помощь)
usage_mode1
выход
;;
-1 | --Вариант1)
val1="$3"
шифт 2
;;
-2 | --Вариант2)
val2="$3"
шифт 2
;;
*)
Эхо "ошибка: неизвестный параметр $2"
usage_mode1
выход 1
;;
эсок
;;
*)
Эхо "ошибка: неизвестный параметр $1"
usage_general
выход 1
;;
эсок
сделано