2016-04-29 4 views
0

Я попыталсяСравнить строковые переменные в Linux

if [ "$str1" == "$str2" && "$str3" == "$str4" ]; 
then 
    statement 
else 
    statement 
fi 

Я попытался с одним знаком равенства. Я пробовал с двумя равными знаками. Я пробовал с кавычками и без них. Я пробовал без полуколонии. Ничто не работает.

я получаю ошибку

[: missing `]' 

Я не имею ни малейшего понятия о том, что это значит. Я пробовал свою функцию без инструкции if, и она работает. У ЛЮДЕЙ У меня ПРОСТРАНСТВО между ведущими и конечными скобками.

+1

Я голосовал, чтобы закрыть как дубликат неправильные вещи - это адреса «и» для двух тестов http://stackoverflow.com/a/8920266/478656 (но другое предположение, что вам нужно пространство до], все еще выполняется). – TessellatingHeckler

+0

обратите внимание на пространство в начале и в конце [] –

+0

что делать, если у вас есть все пробелы между скобками? Есть ли другая причина, по которой это может не сработать? Будет ли вложенность, если заявления будут работать? – Wilson

ответ

0
#!/bin/bash 
s1="hi" 
s2="hi" 

if [ "$s1" == "$s2" ] 
then 
    echo match 
fi 

Обеспечение пространства между квадратными скобками и переменными, и вы получите точный результат.

Обновлено для двух сравнений:

#!/bin/bash 
str1="test" 
str2="test" 
str3="test" 
str4="test" 

if [ "$str1" = "$str2" ] && [ "$str3" = "$str4" ] 
then 
     echo "equals" 
fi 
exit 0; 
+0

Есть ли другие способы, которыми это может быть достигнуто. У меня был вопрос со всеми способами, которые я пробовал, но это было отмечено как дуп. Этот способ не работает. – Wilson

+0

да это работает.Спасибо вам huan feng –