Bash - 运行 grep 返回的命令

Bash - run commands returned by grep

对不起,我真的很烂 bash...

我正在 运行安装一个 debian 服务器,我尝试在更新时自动重新启动服务。我使用 debian-goodies 包中包含的工具 checkrestart

到目前为止,我所做的一切都是:

checkrestart | grep "^service .* restart"

输出:

service apache2 restart
service bind9 restart
service ssh restart

我怎样才能完成我的小脚本,使输出的命令实际上是 运行?

谢谢!

您可以使用 eval。根据初步调查,我不确定是否可以通过管道传输到它。但是,您应该仍然可以像这样使用它:

eval $(checkrestart | grep "^service .* restart" | sed 's/$/;/')

sed 需要在每行末尾添加分号 (;),以便 eval 将它们作为单独的命令读取。

   checkrestart | grep "^service .* restart" | bash -v