我想使用简单 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
。