我不清楚您要实现的确切输出,但我看到您需要对代码进行 2 个修复:
agent_name=$(hostname)
nslookup $agent_name | grep Name | awk '{print $2}' > /var/tmp/${agent_name}_list.txt
这可以进一步减少到
agent_name=$(hostname)
nslookup $agent_name | awk '/Name/{print $2}' > /var/tmp/${agent_name}_list.txt
awk 的众多功能之一是匹配模式,并将其操作限制为仅匹配的行。
注释
agent_name='hostname'
在这里,您只是将 agent_name 的值设置为字符串值“主机名”。注意上面的方式,我使用 shell 命令替换功能来捕获命令的当前值hostname
。
nslookup $agent_name | grep Name | awk '{print $2}' > /var/tmp/$agent_name_list.txt
在这里,您需要使用变量“包装器” {}
,以便 shell 不会尝试将 $agent_name_list 评估为变量。因为您已为 agent_name 分配了一个值,所以 agent_name_list 没有值。假设一个前导 '$' 字符,{}
包装器告诉外壳程序“这是一个变量名,值是什么?” ..
如果上面的更正示例不能完全解决您的问题,请考虑编辑您的消息以包含示例输入数据、给定示例数据所需的输出、您的当前代码和该当前代码的输出。
IHTH