9
出於某種原因,這個腳本打印「字符串是相等的」字符串比較不工作
#!/bin/bash
A='foo'
B='bar'
if [ $A=$B ];
then
echo 'strings are equal'
fi
我在做什麼錯?
出於某種原因,這個腳本打印「字符串是相等的」字符串比較不工作
#!/bin/bash
A='foo'
B='bar'
if [ $A=$B ];
then
echo 'strings are equal'
fi
我在做什麼錯?
你必須離開等號周圍的空間:
if [ "$A" = "$B" ];
then
echo 'strings are equal'
fi
編輯:請還會注意到周圍的變量引號。沒有他們,如果其中一個人是空的,你會陷入困境。
否則測試被解釋爲測試字符串「foo = bar」的長度是否大於0。
見man test
:
...
STRING equivalent to -n STRING
-n STRING
the length of STRING is nonzero
...
你應該有空格周圍等號字符:
if [ $A = $B ];
^^
There
此外,你應該引用變量,就像這樣:
if [ "$A" = "$B" ];
這是還值得指出的是,你做了正確的事情,並在變量周圍添加引號。如果您比較的字符串不帶引號,而其中一個爲空,則由於格式錯誤的測試,您的腳本將退出。 –
@凱爾:是的,你說得對。我應該提到這個事實。 – bmk