如果在脚本来源时比较失败

时间:2017-03-01 18:55:48

标签: bash unix zsh

下面是读取输入的mwe 比较字符' a'。 它按原样调用时工作正常。

read  -n 1  inp
if [ $inp = 'a' ]
then
    echo "Hello"
fi

然而,当它来源时它给出了 错误:

parse error: condition expected: =

1 个答案:

答案 0 :(得分:2)

这是因为您使用zsh而不是bash运行来源的脚本。

源代码脚本总是与执行源代码的shell一起运行,无论shebang如何。您的脚本是为bash编写的,与zsh不兼容,因此失败。

等效的zsh代码是:

read  -k 1  inp
if [ "$inp" = 'a' ]
then
    echo "Hello"
fi