bash e parametri

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.
Rispondi
zxzxasas
Linux 2.x
Linux 2.x
Messaggi: 397
Iscritto il: sab 15 nov 2008, 2:28
Nome Cognome: Pasquale
Slackware: current
Kernel: 2.6.35.7
Desktop: KDE 4.5.2

bash e parametri

Messaggio 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!

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6628
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: bash e parametri

Messaggio da targzeta »

Si, il modo c'è:

Codice: Seleziona tutto

man 1 getopt
Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

zxzxasas
Linux 2.x
Linux 2.x
Messaggi: 397
Iscritto il: sab 15 nov 2008, 2:28
Nome Cognome: Pasquale
Slackware: current
Kernel: 2.6.35.7
Desktop: KDE 4.5.2

Re: bash e parametri

Messaggio da zxzxasas »

Grazie!
Vi farò sapere i trascorsi!

Avatar utente
j0kers
Linux 2.x
Linux 2.x
Messaggi: 418
Iscritto il: dom 22 lug 2007, 1:31
Slackware: 13
Kernel: 2.6.32
Desktop: xfce4

Re: bash e parametri

Messaggio da j0kers »

Codice: Seleziona tutto

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

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6628
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: bash e parametri

Messaggio 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
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
j0kers
Linux 2.x
Linux 2.x
Messaggi: 418
Iscritto il: dom 22 lug 2007, 1:31
Slackware: 13
Kernel: 2.6.32
Desktop: xfce4

Re: bash e parametri

Messaggio 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 ?

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6628
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: bash e parametri

Messaggio 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
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
j0kers
Linux 2.x
Linux 2.x
Messaggi: 418
Iscritto il: dom 22 lug 2007, 1:31
Slackware: 13
Kernel: 2.6.32
Desktop: xfce4

Re: bash e parametri

Messaggio 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

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6628
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: bash e parametri

Messaggio da targzeta »

:banghead: :lol:

Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
j0kers
Linux 2.x
Linux 2.x
Messaggi: 418
Iscritto il: dom 22 lug 2007, 1:31
Slackware: 13
Kernel: 2.6.32
Desktop: xfce4

Re: bash e parametri

Messaggio 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.

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6628
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: bash e parametri

Messaggio 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
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Rispondi