Ich versuche, Befehlszeilenargumente mit getopts in bash zu verarbeiten. Eine der Anforderungen besteht in der Verarbeitung einer beliebigen Anzahl von Optionsargumenten (ohne die Verwendung von Anführungszeichen).Mehrere Option Argumente mit getopts (bash)
1. Beispiel (nur schnappt sich das erste Argument)
madcap:~/projects$ ./getoptz.sh -s a b c
-s was triggered
Argument: a
2. Beispiel (ich will es so verhalten, aber ohne das Argument“
madcap:~/projects$ ./getoptz.sh -s "a b c"
-s was triggered
Argument: a b c
Gibt es eine Möglichkeit zu zitieren ? Dazu
Hier ist der Code ich habe jetzt:
#!/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
Dies kann helfen: http://stackoverflow.com/a/7530327/1983854 – fedorqui
Weitere Angaben erforderlich sind. Welches Verhalten willst du, wenn du 'getoptz.sh -s a -b c' gibst? Ist das '-b' ein Argument für '-s', oder zeigt das' -' eine neue Option an? –
Verwandt mit, aber keinesfalls ein Duplikat von, [Aufruf verschiedener Programme mit verschiedenen Optionen und verschiedenen Argumenten für jede Option] (http://stackoverflow.com/questions/15442950/). Im Allgemeinen empfiehlt es sich, die Richtlinien für die Standardbefehlsschnittstelle zu verwenden [POSIX-Dienstprogrammkonventionen] (http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html) –