2011-06-14 9 views

Odpowiedz

16

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 
    ... 
+0

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. –

+0

@Kyle: Tak, masz rację. Powinienem był wspomnieć o tym fakcie. – bmk

7

Miałeś mieć przestrzenie wokół równa charakter:

if [ $A = $B ]; 
    ^^ 
     There 

Również powinieneś zacytować zmienne, podobnie jak to:

if [ "$A" = "$B" ]; 
Powiązane problemy