PDA

Visualizza la versione completa : Problema in if!!!


Azzurra85
31-08-2007, 09:50
Ciao!!!!
Non riesco a capire perchè non faccia un if in bash....
Il problema è il seguente.... ho una variabile che contiene al suo interno spazi esempio ammettiamo che il valore della variabile var sia "45 67" con lo spazio tra 45 e 67...
quando faccio la seguente verifa
if [[ "${var:i:1}" == ""]] dove i assume valori da 0 fino alla lunghezza della stringa
ho notato che questo controllo non funziona quando ${var:i:1} è uguale a carattere vuoto...eppure quando la condizione si verifica il programma dovrebbe svolgere le istruzioni all'interno dell'if e invece non lo fa....perchè questo....che cosa sbaglio??????????????
:confused: :confused: :confused: :confused: :confused:

GreyFox86
31-08-2007, 10:30
non ho ben capito quello che vorresti fare, potresti postare il codice che hai scritto?

MatCap83
31-08-2007, 12:15
Originariamente inviato da Azzurra85
if [[ "${var:i:1}" == ""]]

Una domanda sorge spontanea, ma il confronto tra stringhe non si fa con un = solo?!?!?! :master: aspetta azzurra, che rigurado i lucidi del prof....

Azzurra85
31-08-2007, 12:16
read var
for (( i=0; i<${#var}; i++ ))
do

done

Azzurra85
31-08-2007, 12:17
read var
for (( i=0; i<${#var}; i++ ))
do
if [[ "${var:i:1}" == "" ]]; then

done

Azzurra85
31-08-2007, 12:19
read var
for (( i=0; i<${#var}; i++ ))
do
if [[ "${var:i:1}" == "" ]]; then < - qui non fa questo if.... se var è 45 67 con lo spazio tra i due numeri
echo "entra"
fi
done

MatCap83
31-08-2007, 12:24
Così dovrebbe andare (aggiungere lo spazio in " "!!!!!!):

"read var
for (( i=0; i<${#var}; i++ ))
do
if [[ "${var:i:1}" == " " ]]
then #< - qui non fa questo if.... se var è 45 67 con lo spazio tra i due numeri
echo "entra"
fi
done"

questo è il mio output:

"[matteo@behemoth ~]$sh prova.sh
45 67
entra
[matteo@behemoth ~]$"

p.s.: se funziona mi devi un favore :D :D :D :D :D

GreyFox86
31-08-2007, 12:41
Si infatti, se volevi cercare lo spazio hai dimenticato di metterlo tra le virgolette :D

Loading