gpt4 book ai didi

bash 脚本中的 Linux sed

转载 作者:太空宇宙 更新时间:2023-11-04 09:37:23 27 4
gpt4 key购买 nike

我正在使用这个非常简单的 bash 脚本:

#!/bin/bash
CMD="sed -e 's/test/abz/' <test >test_res"
echo $CMD
$CMD

当我运行脚本时,我得到了这个输出:

sed -e 's/test/abz/' <test >test_res
sed: -e expression #1, char 1: unknown command: `''

如果我在 cmd 行(不是在 bash 脚本中)运行完全相同的 cmd (sed -e 's/test/abz/' test_res),它工作得很好。

我做错了什么?非常感谢任何帮助。

最佳答案

不要将您的参数存储在单个变量中,因为分词会逐字解释其中的引号。快速破解它是使用 eval 但不推荐:

CMD="sed -e 's/test/abz/' <test >test_res"
eval "$CMD"

您可以使用数组,但您只能使用数组来处理参数,不包括重定向:

CMD=(sed -e 's/test/abz/')
"$CMD[@]}" <test >test_res

至于错误 sed: -e expression #1, char 1: unknown command: `'',那只是因为你的命令扩展为:

sed -e "'s/test/abz/'" "<test" ">test_res"

关于bash 脚本中的 Linux sed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25126235/

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