4 ответов:
все наоборот:
==для сравнения строк,-eqдля числовых.-eqнаходится в той же семье, что и-lt,-le,-gt,-geи-ne, если это поможет вам вспомнить, что есть что.$ [ a == a ]; echo $? 0 $ [ a -eq a ]; echo $? -bash: [: a: integer expression expected 2
==это Баш-изм. Форма POSIX-это=. Если важна переносимость в оболочки без bash, используйте=.
==-это специфичный для bash псевдоним для=и он выполняет строковое (лексическое) сравнение вместо числового сравнения.eqбудучи числовым сравнением, конечно.наконец, я обычно предпочитаю использовать форму
if [ "$a" == "$b" ]
ребята: несколько ответов показывают опасные примеры. Пример ОП
[ $a == $b ]специально используется подстановка некотируемых переменных (по состоянию на 17 октября edit). Ибо[...]это безопасно для равенства строк.но если вы собираетесь перечислить альтернативы, как
[[...]], вы также должны сообщить, что правая сторона должна быть процитирована. Если не цитируется, это шаблон матча! (От bash man page: "любая часть шаблона может быть процитирована, чтобы заставить ее соответствовать в виде строки.").здесь в bash два оператора, дающие "да", соответствуют шаблону, другие три-равенство строк:
$ rht="A*" $ lft="AB" $ [ $lft = $rht ] && echo yes $ [ $lft == $rht ] && echo yes $ [[ $lft = $rht ]] && echo yes yes $ [[ $lft == $rht ]] && echo yes yes $ [[ $lft == "$rht" ]] && echo yes $
Comments