我有这个shell脚本来更新配置文件中的IP地址(匹配$old_address_pattern
的任何内容必须更改为$new_address
):
grep -rl "$old_address_pattern" /etc \
| xargs sed -i "s/$old_address_pattern/$new_address/g"
如果grep
命令找不到匹配的文件,则sed
会抱怨没有输入文件'。当文件列表为空时,如何使此管道成功?
答案 0 :(得分:9)
如果您想在sed
没有产生输出时避免运行grep
,那么(因为您已使用Ubuntu对其进行了标记),您可以提供 -r
{> 1}的强>或 --no-run-if-empty
参数:
<强> - 无 - 运行 - 如果空强>
的 -r 强>
如果标准输入不包含任何非空白,请不要运行该命令。通常,即使没有输入,命令也会运行一次。此选项是GNU扩展。
所以你的命令应该是这样的:
xargs