gpt4 book ai didi

shell - Unix : saving a sed command in a variable, 回显它,然后执行它

转载 作者:行者123 更新时间:2023-12-03 02:58:28 24 4
gpt4 key购买 nike

我想执行一个(例如 sed)命令并在执行之前echo它。

我尝试将命令保存在变量中。
然后,echo它并执行它:

command="sed -i 's/FOO/BAR/g' myFile";
echo "Command: \"$command\"" ;
$command ;

我得到的错误:

Command: "sed -i 's/FOO/BAR/g' myFile"
sed: -e expression #1, char 1: unknown command: `''

我应该如何转义单引号?(或者我可以使用双引号吗?)

我用谷歌搜索了它,但没有找到答案。

最佳答案

简单的答案是删除单引号:sed 将它们解释为 sed 程序的一部分:

command="sed -i s/FOO/BAR/g myFile"
$command

这显然不适合更复杂的 sed 脚本(例如包含空格或分号的脚本)。

假设您使用具有数组(bash、ksh、zsh)的 shell,正确答案是:

command=(sed -i 's/FOO/BAR/g' myFile)
echo "Command: \"${command[*]}\""
"${command[@]}" # the quotes are required here

参见http://www.gnu.org/software/bash/manual/bashref.html#Arrays

关于shell - Unix : saving a sed command in a variable, 回显它,然后执行它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16086606/

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