bash e parametri
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.
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.
-
- 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
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!
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!
- targzeta
- Iper Master
- Messaggi: 6631
- 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
Si, il modo c'è:
Emanuele
Codice: Seleziona tutto
man 1 getopt
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
-
- 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
Grazie!
Vi farò sapere i trascorsi!
Vi farò sapere i trascorsi!
- j0kers
- 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
Codice: Seleziona tutto
while getopts ":--parametro=questo" opt; do
case $opt in
--parametro=questo) esegui ;;
esac
done
- targzeta
- Iper Master
- Messaggi: 6631
- 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
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!j0kers ha scritto:Codice: Seleziona tutto
while getopts ":--parametro=questo" opt; do case $opt in --parametro=questo) esegui ;; esac done
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
- j0kers
- 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
Forse ho sbagliato a capire allora a sto punto non conviene fare semplicemente una cosa del genere:
Senza usare getopt o altro ?
Codice: Seleziona tutto
#!/bin/sh
case $1 in
--pippo=1) echo 1;;
--pippo=2) echo 2;;
*) echo "Usage: $0 ecc..." ;;
esac
- targzeta
- Iper Master
- Messaggi: 6631
- 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
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 .
Emanuele
Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
- j0kers
- 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
L'impostazione era questa non questa: --parametro questoil prof ci ha imposto di usare, per il passaggio dei parametri il formato --parametro=questo
oltretutto con una piccola modifica a case può funzionare anche: --parametro questo
- targzeta
- Iper Master
- Messaggi: 6631
- 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
Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
- j0kers
- 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
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:
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.
è che se un utente cerca un consiglio su un forum o un esempio di programmazione credo che un:
sia troppo banale non credi ? se un utente deve rivolgersi al forum per ricevere un manman 1 getopt
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.
- targzeta
- Iper Master
- Messaggi: 6631
- 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
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
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