Đối với một số lý do kịch bản này in "chuỗi đều bình đẳng"Chuỗi so sánh không hoạt động
#!/bin/bash
A='foo'
B='bar'
if [ $A=$B ];
then
echo 'strings are equal'
fi
Tôi đang làm gì sai?
Đối với một số lý do kịch bản này in "chuỗi đều bình đẳng"Chuỗi so sánh không hoạt động
#!/bin/bash
A='foo'
B='bar'
if [ $A=$B ];
then
echo 'strings are equal'
fi
Tôi đang làm gì sai?
Bạn có để lại một không gian xung quanh dấu bằng:
if [ "$A" = "$B" ];
then
echo 'strings are equal'
fi
Edit: Xin lưu ý cũng có dấu ngoặc kép xung quanh các biến. Nếu không có chúng, bạn sẽ gặp rắc rối nếu một trong số chúng trống.
Nếu không, thử nghiệm được hiểu là kiểm tra xem chuỗi "foo = bar" có độ dài> 0 hay không.
Xem man test
:
...
STRING equivalent to -n STRING
-n STRING
the length of STRING is nonzero
...
Bạn đang nghĩ để có các khoảng trống xung quanh bằng nhân vật:
if [ $A = $B ];
^^
There
Ngoài ra, bạn nên trích dẫn các biến, như thế này:
if [ "$A" = "$B" ];
Đó là cũng đáng chỉ ra rằng bạn đã làm đúng và thêm dấu ngoặc kép xung quanh các biến. Nếu bạn đang so sánh các chuỗi không có dấu ngoặc kép và một chuỗi trống, tập lệnh của bạn sẽ thoát do thử nghiệm không đúng định dạng. –
@Kyle: Vâng, bạn nói đúng. Tôi nên đã đề cập đến thực tế đó. – bmk