为什么下面语句的输出为真?
VAR="[[ "x"=="y" ]]"
if eval $VAR ; then
echo "true"
else
echo "false"
fi
有没有其他方法可以使用变量作为 bash 中 if 语句的条件?
最佳答案
您的引用有问题,您需要在 ==
周围加空格:
VAR='[[ "x" == "y" ]]'
if eval $VAR ; then
echo "true"
else
echo "false"
fi
但是你必须尽可能避免使用eval
。你可以在这里使用一个函数:
fvar() { [[ "x" == "y" ]]; }
然后称它为:
if fvar; then
echo "true"
else
echo "false"
fi
原因 为什么您的 eval
条件评估为 true
因为您有 VAR="[[ "x"=="y"]]"
其中 [[
和 ]]
中的文本被视为单个字符串。这与评估 [[ a ]]
或 [[ foo ]]
关于linux - eval as if 语句条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32259648/