Repository 32bit  Forum
Repository 64bit  Wiki

[bash] getopts e argomenti multipli

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

[bash] getopts e argomenti multipli

Messaggioda danix » dom mag 25, 2008 12:05

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
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: [bash] getopts e argomenti multipli

Messaggioda Mario Vanoni » sab mag 31, 2008 9:35

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}'`
Mario Vanoni
Iper Master
Iper Master
 
Messaggi: 3174
Iscritto il: lun set 03, 2007 20:20
Località: Cuasso al Monte (VA)
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti