我有一个包含shell测试语句的文件。
我需要评估表达式。 例如:
a="something"
fromfile='[ "$a" == "something" ]'
if `$fromfile`; then
echo "true"
else
echo "false"
fi
它总是假的。 我尝试使用``和 eval ,但仍无效。
解决方案是什么?
答案 0 :(得分:1)
我猜你刚才没有找到正确的语法。你真的需要eval
:
a="something"
fromfile='[ "$a" = "something" ]'
if eval "$fromfile"
then
echo "true"
else
echo "false"
fi
但请阅读eval
对安全方面施加的危险!如果您计划执行给的字符串,如果只是部分(由用户,从数据库,从网站,......),您可能会带来安全风险。 (考虑fromfile='rm -rf ~'
←如果您不理解这一点:请勿尝试此操作!它会删除您主目录中的所有内容!)
在大多数情况下,有更好的选择,比如声明shell函数并传递它们的名称,而不是包含完整的包含语法的字符串。