Pagina 1 di 1

bash e parametri

Inviato: gio 10 giu 2010, 12:53
da zxzxasas
Salve,

oggi devo fare uno script per l' università e sostanzialmente, a differenza del solito, il prof ci ha imposto di usare, per il passaggio dei parametri il formato --parametro=questo

Io ho sempre usato una forma più semplice dove li passavo in modo posizionale.
Mi chiedevo se ci fosse un modo pulito per utilizzare questi parametri senza tagliare stringhe ecc ecc...

Grazie!

Re: bash e parametri

Inviato: gio 10 giu 2010, 13:20
da targzeta
Si, il modo c'è:

Codice: Seleziona tutto

man 1 getopt
Emanuele

Re: bash e parametri

Inviato: gio 10 giu 2010, 13:34
da zxzxasas
Grazie!
Vi farò sapere i trascorsi!

Re: bash e parametri

Inviato: sab 12 giu 2010, 18:52
da j0kers

Codice: Seleziona tutto

while getopts ":--parametro=questo" opt; do
  case $opt in
            --parametro=questo) esegui ;;
  esac
done

Re: bash e parametri

Inviato: sab 12 giu 2010, 21:25
da targzeta
j0kers ha scritto:

Codice: Seleziona tutto

while getopts ":--parametro=questo" opt; do
  case $opt in
            --parametro=questo) esegui ;;
  esac
done
NO! getopts è un comando interno della bash e non gestisce i parametri estesi mentre il comando getopt fa anche quello che serve al nostro amico. Prima di postare una soluzione controlla se funziona altrimenti se nessuno ti riprende (e non è facile seguire tutto il forum) queste cose errate rimangono ai posteri, mi raccomando!

E poi anche l'uso che fai di getopts è sbagliato.

Emanuele

Re: bash e parametri

Inviato: dom 13 giu 2010, 0:01
da j0kers
Forse ho sbagliato a capire allora a sto punto non conviene fare semplicemente una cosa del genere:

Codice: Seleziona tutto

#!/bin/sh

case $1 in
	--pippo=1) echo 1;;
	--pippo=2) echo 2;;
        *) echo "Usage: $0 ecc..." ;;
esac
Senza usare getopt o altro ?

Re: bash e parametri

Inviato: dom 13 giu 2010, 9:52
da targzeta
A parte che è sbagliato perchè se io passo "--pippo 2" già il tuo script non funziona più, poi ci era richiesto un modo pulito, getopt gestisce entrambe le forme "--pippo=2" e "--pippo 2". Questo è il modo classico e pulito per gestire i parametri posizionali nella forma estesa, puoi anche tirare fuori cento soluzioni alternative più o meno funzionanti ma è più semplice leggere la pagina del manuale 8).

Emanuele

Re: bash e parametri

Inviato: dom 13 giu 2010, 10:01
da j0kers
il prof ci ha imposto di usare, per il passaggio dei parametri il formato --parametro=questo
L'impostazione era questa non questa: --parametro questo
oltretutto con una piccola modifica a case può funzionare anche: --parametro questo

Re: bash e parametri

Inviato: dom 13 giu 2010, 10:29
da targzeta
:banghead: :lol:

Emanuele

Re: bash e parametri

Inviato: dom 13 giu 2010, 13:15
da j0kers
Guarda Emanuele non c'è l'ho con te figurati anzi da te ho solo da imparare però la cosa che non capisco
è che se un utente cerca un consiglio su un forum o un esempio di programmazione credo che un:
man 1 getopt
sia troppo banale non credi ? se un utente deve rivolgersi al forum per ricevere un man
beh a sto punto lo faceva da solo. Almeno un esempio dell'uso del comando penso che si può postare o sbaglio?
Io cerco sempre di postare qualche esempio che sia elegante o meno questo è un concetto a parte
ma almeno l'utente si fa un'idea di come continuare nelle sue applicazioni.
Ti ripeto non è un'accusa sia chiaro.

Re: bash e parametri

Inviato: dom 13 giu 2010, 14:23
da targzeta
Beh, io ho suggerito il man perchè mi era sembrato di capire che zxzxasas non conoscesse l'esistenza di getopt. Infatti lui non ha chiesto altro, ha solo ringraziato, io ne deduco che la soluzione proposta (man getopt) gli era sufficiente. Un esempio l'avrei postato se avesse chiesto delucidazioni, o meglio se avesse postato un esempio chiedendo perchè non va, ma da quello che ho capito il mio primo intervento era sufficiente.

Io non ti ho ripreso perchè hai postato un esempio, ma perchè l'esempio che hai postato era sbagliato, se avessi postato un esempio d'uso di getopt sarebbe stato utile però mi è sembrato di capire che pur di non leggere il manuale stavi cercando alternative più o meno semplici e incasinate.
Emanuele