Pagina 1 di 3
[bash] controllo dati [risolto]
Inviato: mar 25 ago 2009, 11:14
da sya54M
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
Re: [bash] controllo dati
Inviato: mar 25 ago 2009, 11:22
da raffaele181188
Con bash non credo si possa in modo "classico" (leggo di sì con altre shell), ma puoi sempre provarci con una RegEx
Re: [bash] controllo dati
Inviato: mar 25 ago 2009, 11:25
da conraid
sya54M 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
dalla bash mi sembra di no, dovresti farlo tu con qualche espressione regolare o qualche comando
altrimenti con
se lo usi con una variabile prima (o durante) del suo assegnamento può assumere solamente valori interi
quindi nel tuo caso fai
poi
se non è intero da errore
prova però

Re: [bash] controllo dati
Inviato: mar 25 ago 2009, 11:58
da sya54M
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
Re: [bash] controllo dati
Inviato: mar 25 ago 2009, 12:09
da conraid
sya54M ha scritto:non ho capito cosa fa declare
http://www.pluto.it/files/ildp/guide/ab ... reref.html
sya54M 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 valore
http://www.pluto.it/files/ildp/guide/ab ... n-ops.html
guarda se la segnalazione in basso ti è di aiuto
Re: [bash] controllo dati
Inviato: mar 25 ago 2009, 12:19
da d4z_c0nf
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 valore
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
Inviato: mar 25 ago 2009, 13:05
da 414N
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
-ne serve se stai confrontando valori numerici, != se stai confrontando stringhe di caratteri.
Re: [bash] controllo dati
Inviato: mar 25 ago 2009, 13:13
da paperboy
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 valore
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.
Re: [bash] controllo dati
Inviato: mar 25 ago 2009, 13:14
da d4z_c0nf
414N ha scritto: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
-ne serve se stai confrontando valori numerici, != se stai confrontando stringhe di caratteri.
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
Re: [bash] controllo dati
Inviato: mar 25 ago 2009, 13:36
da Mario Vanoni
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 valore
if [ $# -ne 1 -o ...
$# (integer) -ne "1" (string) e` un nonsenso.
Re: [bash] controllo dati
Inviato: mar 25 ago 2009, 13:48
da sya54M
capito.
si, il problema sembra essere quello ma ho fatto:
ed ora funziona il primo controllo ma non più gli altri 2
d4z_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 [ ] ...
con o senza virgolette non cambia nulla e gli operatori come quello che ho usato io sono apposta per metterli tra parentesi quadre
Re: [bash] controllo dati
Inviato: mar 25 ago 2009, 13:54
da sya54M
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
scusate avevo capito male io la soluzione, ho fatto:
ed ora funzionano tutti i controlli.
ora devo solo vedere di tipizzare la variabile
Re: [bash] controllo dati
Inviato: mar 25 ago 2009, 14:05
da sya54M
conraid 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ò

non da nessun errore, io gli passo una stringa al posto di un numero e lui assegna 0 alla variabile
Re: [bash] controllo dati
Inviato: mar 25 ago 2009, 14:09
da d4z_c0nf
sya54M ha scritto:
capito.
si, il problema sembra essere quello ma ho fatto:
ed ora funziona il primo controllo ma non più gli altri 2
d4z_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 [ ] ...
con o senza virgolette non cambia nulla e gli operatori come quello che ho usato io sono apposta per metterli tra parentesi quadre
Bene, errore mio!
rock
Re: [bash] controllo dati
Inviato: mar 25 ago 2009, 14:10
da conraid
perché devi impostare le modalità di errore, in questo caso prova con
all'inizio dello script