二元运算符在win-bash中的预期

时间:2012-12-11 17:05:24

标签: windows macos bash

我正在尝试编写一个bash脚本,它将在Windows和Windows上运行win-bash用于Windows端,因为它不必安装。 但是,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

在Windows上(win-bash),但在Mac上运行得很好(我将假设它是更正确的......因为它实际上是Unix)。

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

1 个答案:

答案 0 :(得分:2)

尝试单=而不是双==

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

它们都表示测试中的字符串相等性检查,但是用于比较的单个等号是POSIX兼容的,而双等号不是 - 它只适用于当前bash / ksh作为可读性的语法糖(对于旧炮弹也会失败。)