Repository 32bit  Forum
Repository 64bit  Wiki

[bash] getopts e argomenti multipli

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata e la versione del Kernel. Questi dati aiutano le persone che possono rispondere.
2) Specificare sempre il tipo di shell (bash, sh, csh, etc...)
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 dell'ultima regola 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 13: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 19: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 10: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 21: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 1 ospite