我怎样才能避免"没有输入文件"从xdgs运行时来自sed的错误?

时间:2016-02-16 11:45:50

标签: ubuntu sed xargs

我有这个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会抱怨没有输入文件'。当文件列表为空时,如何使此管道成功?

1 个答案:

答案 0 :(得分:9)

如果您想在sed没有产生输出时避免运行grep,那么(因为您已使用Ubuntu对其进行了标记),您可以提供 -r 1}的强>或 --no-run-if-empty 参数:

  

<强> - 无 - 运行 - 如果空
  的 -r
  如果标准输入不包含任何非空白,请不要运行该命令。通常,即使没有输入,命令也会运行一次。此选项是GNU扩展。

所以你的命令应该是这样的:

xargs