Bash:执行存储在变量中的命令[重复]

2024-04-11

我正在编写一个脚本,其中一部分没有按我的预期工作。

为了简单起见,我在一个简单的例子中分解了这一部分:

echo 'echo "" > tmp' | while read cmd; do  $cmd ; done

在这里,我希望 $cmd 执行完整的命令“echo ""> tmp”。

但这种情况发生了:

"" > tmp

执行的命令按字面意思回显“”> tmp。而不是回显“”并将其重定向到文件 tmp.显然,将命令存储在 $cmd 中然后尝试执行它时出现了问题。

即使我进一步简化,结果也是一样的:

cmd="echo "" > tmp"
$cmd
> tmp

我尝试过尝试不同的用法'' and "",但还没有解决。


Use eval执行存储在变量中的命令:

echo 'echo "" > tmp' | while read cmd; do eval "$cmd" ; done

的价值cmdecho "" > tmp。那么当 Bash 将参数替换解析为命令时,该部分"" > tmp将是字符串参数echo, 不被识别为>(重定向)。所以它只会输出参数部分。

等同于:$(echo 'echo "" > tmp')

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Bash:执行存储在变量中的命令[重复] 的相关文章

随机推荐