在 zsh 中比较两个字符串

Doo*_*tor 18 zsh conditional-statements

我一直在到处寻找应该是一个简单的例子。第一次尝试为 zsh 编写脚本,现在 MacOS 已切换为默认值 - 如何比较 if 语句中的两个字符串?我尝试了以下操作,但仍然收到错误no matches found: [foo==foo]

if ["foo"=="foo"]
then
    echo "True"
else
    echo "False"
fi
Run Code Online (Sandbox Code Playgroud)

Dav*_*ill 17

如何比较两个字符串if语句中的两个字符串?

使用以下内容:

if [[ "foo" == "foo" ]] 
Run Code Online (Sandbox Code Playgroud)

  • 也许值得指出的是,运算符“==”周围的 __white space__ 是必不可少的,而不是人们可能猜测的双括号。 (4认同)
  • @mpy - 如果我在 `foo` 和方括号 `[]` 之间没有空格,我会得到 `zsh: = not found` - 像这样 `if ["foo" == "foo"] 或 [["foo " == "foo"]]`,并且 **foo** 和带有 `[[ "foo"=="foo" ]] 或 [ 的双等号 **==** 之间没有空格,不会出现错误"foo"=="foo" ]`,因此根据我的实验,最重要的是在方括号和字符串/变量起点和终点之间留有空格,如下所示 `[[ "foo"=="foo" ] ]` 也不像这样 `if [["foo"=="foo"]] `,它会产生类似 `zsh: no matches found: [[foo==foo]]` 的错误 (4认同)