Repository 32bit  Forum
Repository 64bit  Wiki

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.

bash e parametri

Messaggioda zxzxasas » gio giu 10, 2010 11:53

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

Re: bash e parametri

Messaggioda targzeta » gio giu 10, 2010 12:20

Si, il modo c'è:
Codice: Seleziona tutto
man 1 getopt


Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6200
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: bash e parametri

Messaggioda zxzxasas » gio giu 10, 2010 12:34

Grazie!
Vi farò sapere i trascorsi!
zxzxasas
Linux 2.4
Linux 2.4
 
Messaggi: 397
Iscritto il: sab nov 15, 2008 2:28
Nome Cognome: Pasquale
Slackware: current
Kernel: 2.6.35.7
Desktop: KDE 4.5.2

Re: bash e parametri

Messaggioda j0kers » sab giu 12, 2010 17:52

Codice: Seleziona tutto
while getopts ":--parametro=questo" opt; do
  case $opt in
            --parametro=questo) esegui ;;
  esac
done
Avatar utente
j0kers
Linux 2.4
Linux 2.4
 
Messaggi: 418
Iscritto il: dom lug 22, 2007 0:31
Slackware: 13
Kernel: 2.6.32
Desktop: xfce4

Re: bash e parametri

Messaggioda targzeta » sab giu 12, 2010 20:25

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
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6200
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: bash e parametri

Messaggioda j0kers » sab giu 12, 2010 23:01

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
j0kers
Linux 2.4
Linux 2.4
 
Messaggi: 418
Iscritto il: dom lug 22, 2007 0:31
Slackware: 13
Kernel: 2.6.32
Desktop: xfce4

Re: bash e parametri

Messaggioda targzeta » dom giu 13, 2010 8:52

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
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6200
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: bash e parametri

Messaggioda j0kers » dom giu 13, 2010 9:01

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
j0kers
Linux 2.4
Linux 2.4
 
Messaggi: 418
Iscritto il: dom lug 22, 2007 0:31
Slackware: 13
Kernel: 2.6.32
Desktop: xfce4

Re: bash e parametri

Messaggioda targzeta » dom giu 13, 2010 9:29

:banghead: :lol:

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6200
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: bash e parametri

Messaggioda j0kers » dom giu 13, 2010 12:15

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
j0kers
Linux 2.4
Linux 2.4
 
Messaggi: 418
Iscritto il: dom lug 22, 2007 0:31
Slackware: 13
Kernel: 2.6.32
Desktop: xfce4

Re: bash e parametri

Messaggioda targzeta » dom giu 13, 2010 13:23

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
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6200
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Bing [Bot] e 2 ospiti