二进制运算符预期在 win-bash 中



我正在尝试编写一个可以在Mac和Windows上运行的bash脚本,方法是在Windows端使用win-bash,因为它不必安装。但是,Mac和Windows似乎对语法有不同的看法。

例如,到目前为止,我有以下脚本:

echo "Setup..."
shopt -s expand_aliases #make sure aliases work
if [ "$(uname)" == "Darwin" ]; then
    alias p4cli=./bin/p4
else
    alias p4cli=p4  
fi
echo "Checking login status..."
p4cli groups > .trash
if [ $? -ne 0 ]; then
    p4cli login
fi
echo "Done!"

此操作失败,并显示:

[: ==: binary operator expected

在窗口(win-bash)上,但在Mac上运行良好(我将假设这是更正确的一个......因为它实际上是Unix)。

知道我在这里做错了什么吗?

尝试单=而不是双==

if [ "$(uname)" = "Darwin" ]; then

它们都意味着测试中的字符串相等性检查,但用于比较的单个等号符合 POSIX 标准,而双等号则不是 - 它仅适用于当前的 bash/ksh 作为可读性的语法糖(对于较旧的 shell 也会失败)。

相关内容

  • 没有找到相关文章

最新更新