[
встроенная команда оболочки в bash и zsh:
$ type [
[ is a shell builtin
Из документации команд Shell Builtin :
Встроенные команды содержатся внутри самой оболочки . Когда имя встроенной команды используется в качестве первого слова простой команды (см. Простые команды ), оболочка выполняет команду напрямую, без вызова другой программы. Встроенные команды необходимы для реализации функциональности, которую невозможно или неудобно получить с помощью отдельных утилит.
Официальная документация ( $ help test
) позволяет использовать только =
:
STRING1 = STRING2
Истинно, если строки равны.
Итак, правильное выражение будет:
$ [ "a" = "a" ] && echo yes
yes
То, что происходит, - то, что bash немного менее строг. Поддержка ==
оператора с [
расширением bash, похоже, не рекомендуется использовать:
строка1 == строка2
строка1 = строка2
Истинно, если строки равны. При использовании с командой [[] выполняется сопоставление с образцом, как описано выше (см. Условные конструкции ).
'=' должен использоваться с командой test для соответствия POSIX.
Если вы хотите использовать ==
, вы должны использовать [[
ключевое слово:
$ [[ "a" == "a" ]] && echo yes
yes
Имейте в виду, что [[
он менее переносим (это не POSIX). Но и bash, и zsh поддерживают это.
$PATH
поиска. и==
не действуетtest
синтаксис для/usr/bin/[
Анвэя. Просто=
в порядке.