在 if 语句中使用 python 表达式的输出

在 if 语句中使用 python 表达式的输出

我想使用简单 Python 表达式的输出作为 if 语句中的条件。我知道

x=$(python3 -c "print('False')")
echo $x

将产生 的输出False,所以我不明白为什么这总是产生结果True

test () {
    if [ $(python3 -c "print('$1')") ]
    then
        echo "True"
    else
        echo "False"
    fi
}

test False

答案1

因为$(python3 -c "print('$1')")是一个细绳不是逻辑值,只是[ ... ]测试字符串是否非空。

为了使其按照您期望的方式工作,请将测试更改为

if [ "$(python3 -c "print('$1')")" = "True" ]

顺便说一句,您应该避免使用test作为函数的名称,因为这会掩盖 shell 的内置函数test

相关内容