Я пытаюсь обрабатывать аргументы командной строки, используя getopts в bash. Одним из требований является обработка произвольного количества аргументов параметров (без использования кавычек).Несколько аргументов параметра с использованием getopts (bash)
первый пример (только хватает 1-й аргумент)
madcap:~/projects$ ./getoptz.sh -s a b c
-s was triggered
Argument: a
второй пример (я хочу, чтобы вести себя так, но без необходимости цитировать аргумент»
madcap:~/projects$ ./getoptz.sh -s "a b c"
-s was triggered
Argument: a b c
Есть ли способ ? это сделать
Вот код, у меня сейчас:
#!/bin/bash
while getopts ":s:" opt; do
case $opt in
s) echo "-s was triggered" >&2
args="$OPTARG"
echo "Argument: $args"
;;
\?) echo "Invalid option: -$OPTARG" >&2
;;
:) echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
Это может помочь: http://stackoverflow.com/a/7530327/1983854 – fedorqui
Подробнее необходимы. Какое поведение вы хотите, если задано 'getoptz.sh -s -b c'? Является ли '-b' аргументом' -s', или '' указывает новый параметр? –
Связано с, но ни в коем случае не дублируется, [Вызов различных программ с различными параметрами и различными аргументами для каждого параметра] (http://stackoverflow.com/questions/15442950/). Как правило, лучше использовать стандартные правила командного интерфейса [POSIX Utility Conventions] (http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html) –