[bash] controllo dati [risolto]
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.
- sya54M
- Master

- Messaggi: 1665
- Iscritto il: mer 6 giu 2007, 14:44
- Nome Cognome: Andrea Peluso
- Slackware: 64-current
- Kernel: ultimo
- Desktop: KDE
- Località: (Salerno)
- Contatta:
[bash] controllo dati [risolto]
ciao, sto aggiornando uno script volendo aggiungerci un controllo delle opzioni passate alla riga di comando.
mi chiedevo se è possibile controllare se $1 è un valore numerico.
grazie
mi chiedevo se è possibile controllare se $1 è un valore numerico.
grazie
Ultima modifica di sya54M il mar 25 ago 2009, 18:13, modificato 1 volta in totale.
- raffaele181188
- Packager

- Messaggi: 789
- Iscritto il: ven 7 set 2007, 21:40
- Nome Cognome: Raffaele
- Slackware: current
- Kernel: 2.6.29.6
- Desktop: KDE 4.3
- Distribuzione: Ubuntu
- Località: DearSkin (FG)
Re: [bash] controllo dati
Con bash non credo si possa in modo "classico" (leggo di sì con altre shell), ma puoi sempre provarci con una RegEx
- conraid
- Staff

- Messaggi: 13631
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: [bash] controllo dati
dalla bash mi sembra di no, dovresti farlo tu con qualche espressione regolare o qualche comandosya54M ha scritto:ciao, sto aggiornando uno script volendo aggiungerci un controllo delle opzioni passate alla riga di comando.
mi chiedevo se è possibile controllare se $1 è un valore numerico.
grazie
altrimenti con
Codice: Seleziona tutto
declare -iquindi nel tuo caso fai
Codice: Seleziona tutto
declare -i variabileCodice: Seleziona tutto
variabile=$1prova però
- sya54M
- Master

- Messaggi: 1665
- Iscritto il: mer 6 giu 2007, 14:44
- Nome Cognome: Andrea Peluso
- Slackware: 64-current
- Kernel: ultimo
- Desktop: KDE
- Località: (Salerno)
- Contatta:
Re: [bash] controllo dati
non ho capito cosa fa declare
e mi sapete dire perchè in questo controllo:
la prima condizione non funziona e le altre 2 si? risulta sempre non verificata anche se non viene passato nessun valore
e mi sapete dire perchè in questo controllo:
Codice: Seleziona tutto
if [ $# -ne "1" -o $1 = "--help" -o $1 = "-h" ]- conraid
- Staff

- Messaggi: 13631
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: [bash] controllo dati
http://www.pluto.it/files/ildp/guide/ab ... reref.htmlsya54M ha scritto:non ho capito cosa fa declare
http://www.pluto.it/files/ildp/guide/ab ... n-ops.htmlsya54M ha scritto: e mi sapete dire perchè in questo controllo:la prima condizione non funziona e le altre 2 si? risulta sempre non verificata anche se non viene passato nessun valoreCodice: Seleziona tutto
if [ $# -ne "1" -o $1 = "--help" -o $1 = "-h" ]
guarda se la segnalazione in basso ti è di aiuto
- d4z_c0nf
- Packager

- Messaggi: 1296
- Iscritto il: mar 14 mar 2006, 18:07
- Nome Cognome: Rocco Aliberti
- Slackware: 14.2-current64
- Kernel: 4.14.73
- Desktop: awesomeWM
- Località: Pinerolo
Re: [bash] controllo dati
Scusa ma "-ne" che rappresenta?sya54M ha scritto:non ho capito cosa fa declare
e mi sapete dire perchè in questo controllo:la prima condizione non funziona e le altre 2 si? risulta sempre non verificata anche se non viene passato nessun valoreCodice: Seleziona tutto
if [ $# -ne "1" -o $1 = "--help" -o $1 = "-h" ]
Io ricordo che -n stringa , si usa per verificare se la stringa non è vuota. E -e pathname , se il file esiste. Tu volevi un NOT EQUAL? In tal caso devi usare != .
Scusami nel caso avessi io sbagliato ad interpretare.
rock
- 414N
- Iper Master

- Messaggi: 2924
- Iscritto il: mer 13 feb 2008, 16:19
- Slackware: 15.0
- Kernel: 5.15.19
- Desktop: KDE5
- Località: Bulagna
- Contatta:
Re: [bash] controllo dati
-ne serve se stai confrontando valori numerici, != se stai confrontando stringhe di caratteri.d4z_c0nf ha scritto: Scusa ma "-ne" che rappresenta?
Io ricordo che -n stringa , si usa per verificare se la stringa non è vuota. E -e pathname , se il file esiste. Tu volevi un NOT EQUAL? In tal caso devi usare != .
Scusami nel caso avessi io sbagliato ad interpretare.
rock
Re: [bash] controllo dati
sya54M ha scritto:non ho capito cosa fa declare
e mi sapete dire perchè in questo controllo:la prima condizione non funziona e le altre 2 si? risulta sempre non verificata anche se non viene passato nessun valoreCodice: Seleziona tutto
if [ $# -ne "1" -o $1 = "--help" -o $1 = "-h" ]
in bash -ne -lt -eq etc.... confrontano i numeri se li confronti con le stringhe ogni stringa ha valore 0
per fare il confronto di stringhe si usano i modificatori < > = != e confrontano le stringhe in ordine alfabetico.
- d4z_c0nf
- Packager

- Messaggi: 1296
- Iscritto il: mar 14 mar 2006, 18:07
- Nome Cognome: Rocco Aliberti
- Slackware: 14.2-current64
- Kernel: 4.14.73
- Desktop: awesomeWM
- Località: Pinerolo
Re: [bash] controllo dati
Ok, ma "1" però è una stringa, non un valore numerico. E poi da quel che sapevo per le condizioni numeriche vanno usati ( ) e non [ ] ...414N ha scritto:-ne serve se stai confrontando valori numerici, != se stai confrontando stringhe di caratteri.d4z_c0nf ha scritto: Scusa ma "-ne" che rappresenta?
Io ricordo che -n stringa , si usa per verificare se la stringa non è vuota. E -e pathname , se il file esiste. Tu volevi un NOT EQUAL? In tal caso devi usare != .
Scusami nel caso avessi io sbagliato ad interpretare.
rock
rock
-
Mario Vanoni
- Iper Master

- Messaggi: 3174
- Iscritto il: lun 3 set 2007, 21:20
- Nome Cognome: Mario Vanoni
- Slackware: 12.2
- Kernel: 3.0.4 statico
- Desktop: fluxbox/seamonkey
- Località: Cuasso al Monte (VA)
Re: [bash] controllo dati
sya54M ha scritto:non ho capito cosa fa declare
e mi sapete dire perchè in questo controllo:la prima condizione non funziona e le altre 2 si? risulta sempre non verificata anche se non viene passato nessun valoreCodice: Seleziona tutto
if [ $# -ne "1" -o $1 = "--help" -o $1 = "-h" ]
if [ $# -ne 1 -o ...
$# (integer) -ne "1" (string) e` un nonsenso.
- sya54M
- Master

- Messaggi: 1665
- Iscritto il: mer 6 giu 2007, 14:44
- Nome Cognome: Andrea Peluso
- Slackware: 64-current
- Kernel: ultimo
- Desktop: KDE
- Località: (Salerno)
- Contatta:
Re: [bash] controllo dati
capito.conraid ha scritto: http://www.pluto.it/files/ildp/guide/ab ... reref.html
si, il problema sembra essere quello ma ho fatto:conraid ha scritto: http://www.pluto.it/files/ildp/guide/ab ... n-ops.html
guarda se la segnalazione in basso ti è di aiuto
Codice: Seleziona tutto
if [ $# -ne "1" -o x$1 = "--help" -o x$1 = "-h" ]con o senza virgolette non cambia nulla e gli operatori come quello che ho usato io sono apposta per metterli tra parentesi quadred4z_c0nf ha scritto:Ok, ma "1" però è una stringa, non un valore numerico. E poi da quel che sapevo per le condizioni numeriche vanno usati ( ) e non [ ] ...
- sya54M
- Master

- Messaggi: 1665
- Iscritto il: mer 6 giu 2007, 14:44
- Nome Cognome: Andrea Peluso
- Slackware: 64-current
- Kernel: ultimo
- Desktop: KDE
- Località: (Salerno)
- Contatta:
Re: [bash] controllo dati
scusate avevo capito male io la soluzione, ho fatto:sya54M ha scritto:si, il problema sembra essere quello ma ho fatto:
Codice: Seleziona tutto
if [ $# -ne "1" -o x$1 = "--help" -o x$1 = "-h" ]
ed ora funziona il primo controllo ma non più gli altri 2![]()
Codice: Seleziona tutto
if [ $# -ne "1" -o x$1 = x"--help" -o x$1 = x"-h" ]ora devo solo vedere di tipizzare la variabile
- sya54M
- Master

- Messaggi: 1665
- Iscritto il: mer 6 giu 2007, 14:44
- Nome Cognome: Andrea Peluso
- Slackware: 64-current
- Kernel: ultimo
- Desktop: KDE
- Località: (Salerno)
- Contatta:
Re: [bash] controllo dati
non da nessun errore, io gli passo una stringa al posto di un numero e lui assegna 0 alla variabileconraid ha scritto:quindi nel tuo caso fai
Codice: Seleziona tutto
declare -i variabile
poi
Codice: Seleziona tutto
variabile=$1
se non è intero da errore
prova però
- d4z_c0nf
- Packager

- Messaggi: 1296
- Iscritto il: mar 14 mar 2006, 18:07
- Nome Cognome: Rocco Aliberti
- Slackware: 14.2-current64
- Kernel: 4.14.73
- Desktop: awesomeWM
- Località: Pinerolo
Re: [bash] controllo dati
Bene, errore mio!sya54M ha scritto:capito.conraid ha scritto: http://www.pluto.it/files/ildp/guide/ab ... reref.htmlsi, il problema sembra essere quello ma ho fatto:conraid ha scritto: http://www.pluto.it/files/ildp/guide/ab ... n-ops.html
guarda se la segnalazione in basso ti è di aiutoed ora funziona il primo controllo ma non più gli altri 2Codice: Seleziona tutto
if [ $# -ne "1" -o x$1 = "--help" -o x$1 = "-h" ]
con o senza virgolette non cambia nulla e gli operatori come quello che ho usato io sono apposta per metterli tra parentesi quadred4z_c0nf ha scritto:Ok, ma "1" però è una stringa, non un valore numerico. E poi da quel che sapevo per le condizioni numeriche vanno usati ( ) e non [ ] ...
rock
- conraid
- Staff

- Messaggi: 13631
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: [bash] controllo dati
perché devi impostare le modalità di errore, in questo caso prova con
all'inizio dello script
Codice: Seleziona tutto
set -eu