Próbuję przetwarzać argumenty wiersza poleceń za pomocą getopts w bash. Jednym z wymagań jest przetwarzanie dowolnej liczby argumentów opcji (bez użycia cytatów).Wiele argumentów opcji za pomocą getopts (bash)
1-ty przykład (tylko chwyta 1st argumentu)
madcap:~/projects$ ./getoptz.sh -s a b c
-s was triggered
Argument: a
2-ty przykład (Chcę, żeby zachowywać się tak, ale bez konieczności przytoczyć argument”
madcap:~/projects$ ./getoptz.sh -s "a b c"
-s was triggered
Argument: a b c
Czy istnieje sposób, aby ? to zrobić
Oto kod mam teraz:
#!/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
To może pomóc: http://stackoverflow.com/a/7530327/1983854 – fedorqui
Więcej szczegółów jest konieczne. Jakie zachowanie chcesz uzyskać, podając 'getoptz.sh -s a -b c'? Czy argument -b ma wartość '-s', czy też' -' wskazuje nową opcję? –
Powiązany, ale w żadnym wypadku nie duplikat, [Wywołanie różnych programów z różnymi opcjami i różnymi argumentami dla każdej opcji] (http://stackoverflow.com/questions/15442950/). Zasadniczo najlepiej jest stosować standardowe wytyczne interfejsu poleceń [Konwencje POSIX Utility] (http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html) –