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
Moderatore: Staff


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
declare -ideclare -i variabilevariabile=$1

if [ $# -ne "1" -o $1 = "--help" -o $1 = "-h" ]
sya54M ha scritto:non ho capito cosa fa declare
sya54M ha scritto:e mi sapete dire perchè in questo controllo:
- Codice: Seleziona tutto
if [ $# -ne "1" -o $1 = "--help" -o $1 = "-h" ]
la prima condizione non funziona e le altre 2 si? risulta sempre non verificata anche se non viene passato nessun valore

sya54M ha scritto:non ho capito cosa fa declare
e mi sapete dire perchè in questo controllo:
- Codice: Seleziona tutto
if [ $# -ne "1" -o $1 = "--help" -o $1 = "-h" ]
la prima condizione non funziona e le altre 2 si? risulta sempre non verificata anche se non viene passato nessun valore

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

sya54M ha scritto:non ho capito cosa fa declare
e mi sapete dire perchè in questo controllo:
- Codice: Seleziona tutto
if [ $# -ne "1" -o $1 = "--help" -o $1 = "-h" ]
la prima condizione non funziona e le altre 2 si? risulta sempre non verificata anche se non viene passato nessun valore

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.

sya54M ha scritto:non ho capito cosa fa declare
e mi sapete dire perchè in questo controllo:
- Codice: Seleziona tutto
if [ $# -ne "1" -o $1 = "--help" -o $1 = "-h" ]
la prima condizione non funziona e le altre 2 si? risulta sempre non verificata anche se non viene passato nessun valore

conraid ha scritto:http://www.pluto.it/files/ildp/guide/ab ... reref.html
conraid ha scritto:http://www.pluto.it/files/ildp/guide/ab ... n-ops.html
guarda se la segnalazione in basso ti è di aiuto
if [ $# -ne "1" -o x$1 = "--help" -o x$1 = "-h" ]
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 [ ] ...

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![]()
if [ $# -ne "1" -o x$1 = x"--help" -o x$1 = x"-h" ]
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ò

sya54M ha scritto:conraid ha scritto:http://www.pluto.it/files/ildp/guide/ab ... reref.html
capito.conraid ha scritto:http://www.pluto.it/files/ildp/guide/ab ... n-ops.html
guarda se la segnalazione in basso ti è di aiuto
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
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

set -eu
Visitano il forum: Nessuno e 1 ospite