gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 20:45:03 26 4
gpt4 key购买 nike

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

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

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

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

但是这种情况发生了:

"" > tmp

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

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

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

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

最佳答案

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

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

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

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

关于Bash:执行存储在变量中的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44745441/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com