Pagina 1 di 1

[bash] getopts e argomenti multipli

Inviato: dom 25 mag 2008, 13:05
da danix
Ciao a tutti,
oggi mi è venuto un dubbio riguardo a getopts...
mettiamo caso che io abbia uno script che richiede le opzioni -a -b -c... all'opzione -a voglio passare un parametro, quindi faccio così:

Codice: Seleziona tutto

while getopts ":a:bc" OPTION;do
    case $OPTION in
        a) echo "hai selezionato -a con '$OPTARG' come argomento" ;;
        b) echo "hai selezionato -b";;
        c) echo "hai selezionato -c";;
        *) echo "hai sbagliato";;
    esac
done
shift $(($OPTIND - 1))
exit
In questo modo se io chiamo lo script in questo modo:

Codice: Seleziona tutto

$ script -a argomento
hai selezionato -a con 'argomento' come argomento
avrò questo risultato, ma se io volessi passare più di un argomento all'opzione -a?? Ad esempio se volessi ottenere questo risultato??

Codice: Seleziona tutto

hai selezionato -a con 'argomento1' 'argomento2' 'argomentoN' come argomenti
come dovrei fare??

Grazie mille per l'aiuto...


Ciau

Re: [bash] getopts e argomenti multipli

Inviato: sab 31 mag 2008, 10:35
da Mario Vanoni
danix85 ha scritto:Ciao a tutti,
oggi mi è venuto un dubbio riguardo a getopts...
mettiamo caso che io abbia uno script che richiede le opzioni -a -b -c... all'opzione -a voglio passare un parametro, quindi faccio così:

Codice: Seleziona tutto

while getopts ":a:bc" OPTION;do
    case $OPTION in
        a) echo "hai selezionato -a con '$OPTARG' come argomento" ;;
        b) echo "hai selezionato -b";;
        c) echo "hai selezionato -c";;
        *) echo "hai sbagliato";;
    esac
done
shift $(($OPTIND - 1))
exit
In questo modo se io chiamo lo script in questo modo:

Codice: Seleziona tutto

$ script -a argomento
hai selezionato -a con 'argomento' come argomento
avrò questo risultato, ma se io volessi passare più di un argomento all'opzione -a?? Ad esempio se volessi ottenere questo risultato??

Codice: Seleziona tutto

hai selezionato -a con 'argomento1' 'argomento2' 'argomentoN' come argomenti
come dovrei fare??

Grazie mille per l'aiuto...


Ciau
Metti gli argomenti in apici,
-a 'a b c d e f'
separarli poi in $OPTARG e` facile:
awk '{print NF}' == numero di argomenti in $OPTARG
awk '{print $2}' == il secondo argomento ecc.
nella shell e.g.:
VARIABILE1=`echo $OPTARG | awk '{print $1}'`