【发布时间】:2026-02-24 08:30:01
【问题描述】:
我需要使用 bash 在 Linux 目录下的几个文件中替换一个字符串。此命令在命令行中运行良好:
find ./ -iname '*.xml' -exec sed -i -e 's/<value>string<\/value>/<value>string01<\/value>/g' {} \;
当我尝试使用 bash 将其放入 shell 时,我收到此错误:
STDERR: find: `-exec' 缺少参数
更新:我的 bash 代码在 Chef 食谱中。代码如下:
bash "change_string_dir" do
code <<-EOH
find ./ -iname '*.xml' -exec sed -i -e 's/<value>string<\/value>/<value>string01<\/value>/g' {} \;
EOH
end
【问题讨论】:
-
您能否编辑您的 Q 以包含更多脚本以及调用它的命令?你在第 1 行使用
#!/bin/bash吗?STDERR:是真的印在屏幕上,还是你的评论让我们知道它在哪个管道上?我怀疑您正在使用另一个捕获 I/O 的程序,而该其他程序可能是问题的一部分。 -
我已经更新了我的问题....
-
尝试使用
code <<-'EOH'(在EOH周围加上单引号)禁用对字符串内容的Ruby 解释。我怀疑 Ruby 正在吞下分号之前的反斜杠。
标签: ruby bash shell escaping chef-recipe