IF语句始终求值为true

时间:2018-05-07 21:56:34

标签: bash

我有以下代码段,其中函数test回显false。我在if语句中使用带有shell替换的回显值:

#!/usr/bin/env bash

test () {
    echo "false"
}

if [[ "$(test)" -eq "true" ]]
then
    echo hello world
fi

我希望上面的打印hello world,因为我认为这最终会说[[ "false" -eq "true" ]]

然而,当我运行脚本时,它回显hello world

2 个答案:

答案 0 :(得分:0)

如果test-eq,您会发现-gt-ltif [ 0 -gt 1 ];测试条件仅适用于数值。

  

INTEGER1 -eq INTEGER2
  INTEGER1等于INTEGER2

即,=

对于bash中的字符串比较,只需使用if [[ "$(test)" = "true" ]]

尝试使用

python script.py $arg1 $arg2

这将为您提供预期的行为。

答案 1 :(得分:0)

试试这个

#!/usr/bin/env bash
test () {
    echo "false"
}

if [[ "$(test)" = "true" ]]
then
    echo hello world
fi