Как передать параметры в getopts Bash, используя пользовательскую переменную, а не ${1}, ${2} и т. д.
Я хочу указать параметры (параметры и аргументы) в переменной Bash и передать эту переменную getopts
для разбора вместо обычных переменных ${1}
, ${2}
и т.д. Я не уверен, как это сделать. Часто в документации дляgetopts
, getopts
синтаксис описывается следующим образом:
Syntax
getopts optstring name [args]
я знаю это optstring
представляет инструкции для getopts
о том, как анализировать параметры и name
переменная, которая предназначена для хранения текущей информации, рассматриваемой getopts
(например, значение аргумента опции), но я не знаю, что [args]
предназначен для. Это способ передачи параметров в getopts
без использования стандартных переменных командной строки? Если это так, как я могу использовать это средство? Если это не так, что было бы хорошим способом передать аргументы, хранящиеся, скажем, в переменной Bash, разделенной пробелом, getopts
? Спасибо!
1 ответ
Да, необязательный args
аргументы - это способ передачи пользовательских параметров. Как сказано в руководстве:
Обычно getopts анализирует позиционные параметры, но если в аргументах указано больше аргументов, вместо этого getopts анализирует их.
Итак, если у вас есть массив:
myargs=(arg1 arg2 arg3)
ты можешь использовать:
getopts optstring name "${myargs[@]}"
обрабатывать их.
Пример:
$ # Set positional parameters:
$ set -- -a 1 -b
$ getopts a:b var -a 2
$ echo $var
a
$ echo $OPTARG
2
Как видите, он извлек значение из аргументов, которые я указал команде (2
), а не позиционные параметры для оболочки (1
)