z jakiegoś powodu Skrypt wypisuje „string są równe”porównanie String nie działa
#!/bin/bash
A='foo'
B='bar'
if [ $A=$B ];
then
echo 'strings are equal'
fi
Co robię źle?
z jakiegoś powodu Skrypt wypisuje „string są równe”porównanie String nie działa
#!/bin/bash
A='foo'
B='bar'
if [ $A=$B ];
then
echo 'strings are equal'
fi
Co robię źle?
trzeba zostawić przestrzeń wokół znaku równości:
if [ "$A" = "$B" ];
then
echo 'strings are equal'
fi
Edycja: Proszę zauważyć także w cudzysłowie zmiennych. Bez nich wpadniesz w kłopoty, jeśli jeden z nich jest pusty.
W przeciwnym razie test zostanie zinterpretowany jako test , jeśli ciąg "foo = bar" ma długość> 0.
Zobacz man test
:
...
STRING equivalent to -n STRING
-n STRING
the length of STRING is nonzero
...
Miałeś mieć przestrzenie wokół równa charakter:
if [ $A = $B ];
^^
There
Również powinieneś zacytować zmienne, podobnie jak to:
if [ "$A" = "$B" ];
To Warto również podkreślić, że postąpiłeś właściwie i dodałeś cytaty dotyczące zmiennych. Jeśli porównujesz ciągi bez cudzysłowów, a jeden jest pusty, Twój skrypt zakończy działanie z powodu nieprawidłowego testu. –
@Kyle: Tak, masz rację. Powinienem był wspomnieć o tym fakcie. – bmk