首页 > 解决方案 > 需要有关使用嵌套命令替代的建议

问题描述

我正试图围绕嵌套命令替换。我尝试嵌套反引号,但显然这不起作用。如果不先声明 ${host} 变量,您将如何嵌套以下内容?

host=$(hostname|cut -c1-14);for id in `aladmin list|grep ${host}|awk '{print $2}'`;do aladmin delete ${id};done

该命令列出服务器上的所有警报,对主机名的前 14 个字符进行 greps,然后删除 awk 在字段 2 中找到的具有警报 ID 的警报。

我的问题绝不会重复上一篇文章中的“你好”: 如何正确嵌套 Bash 反引号

提前致谢, 比约恩

标签: linuxredhat

解决方案


在 awk 中做所有事情。没有必要使用 for 循环和 grep 等。有比这更好的方法,但作为第一个近似值,尝试类似:

aladmin list | awk "/$(hostname | cut -c1-14)/"'{ print "aladmin delete " $2 | "sh"}'

推荐阅读