Sto tentando di elaborare gli argomenti della riga di comando utilizzando getopts in bash. Uno dei requisiti è l'elaborazione di un numero arbitrario di argomenti di opzioni (senza l'uso di virgolette).Argomenti di opzioni multiple che utilizzano getopts (bash)
primo esempio (afferra solo il primo argomento)
madcap:~/projects$ ./getoptz.sh -s a b c
-s was triggered
Argument: a
secondo esempio (lo voglio a comportarsi in questo modo, ma senza bisogno di citare l'argomento"
madcap:~/projects$ ./getoptz.sh -s "a b c"
-s was triggered
Argument: a b c
C'è un modo per ? fare questo
Ecco il codice che ho adesso:
#!/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
Questo può aiutare: http://stackoverflow.com/a/7530327/1983854 – fedorqui
Maggiori dettagli sono necessari. Quale comportamento vuoi quando viene dato 'getoptz.sh -s a -b c'? '-b' è un argomento per' -s', o '-' indica una nuova opzione? –
Relativo a, ma non in alcun modo un duplicato di, [Chiamare programmi diversi con opzioni diverse e argomenti diversi per ciascuna opzione] (http://stackoverflow.com/questions/15442950/). In genere, è preferibile utilizzare le linee guida standard dell'interfaccia di comando [POSIX Utility Conventions] (http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html) –