0

我正在阅读 bash 高级脚本指南(如果我没记错的话),它说了一些eval可以用来强制变量更新的内容。

所以我尝试了这个:

randomPath="/path/$var/here/"  # var is not defined at this point
echo $randomPath
/path//here/
var="is" # initially defining var
eval $randomPath
zsh: no such file or directory: /path//here/

我不明白错误消息,我想知道我是否正确使用了 eval 。

我期待的输出是:

eval $randomPath
echo $randomPath
/path/is/here
4

1 回答 1

4

问题是$var已经被替换了randomPath="/path/$var/here/",并且因为它是空白的,所以randomPath被设置为/path//here。您想使用单引号来防止过早替换:

randomPath='/path/$var/here/'

第二个问题是作为命令eval x运行。x您要做的是将新评估的变量作为字符串返回:

eval echo $randomPath

您可以以通常的方式将其存储在变量中:

randomPath=`eval echo $randomPath`
于 2013-06-08T20:16:21.340 回答