【发布时间】:2016-09-26 15:09:13
【问题描述】:
在my question 中,我学会了使用循环,并在您的帮助下完成了一个软件多实例的安装脚本。非常感谢:)
现在我尝试使用 sed 自动设置配置文件。为此,我需要循环中的多个变量。
我从系统中读取 IP 地址和 IP (PTR) 的主机名
IPADDR=`ifconfig | awk '{print $2}' | egrep -o '([0-9]+\.){3}[0-9]+'|grep -v 127.0.0.1`
for ipaddr in ${IPADDR[@]}; do echo $ipaddr; done
for iphost in ${IPADDR[@]}; do host $iphost |grep pointer | awk '{print $NF}' RS='.\n'; done
我的脚本知道,有 3 个 IP,知道 IP 地址和主机名。
IP (3) 的数量现在是我的 001 002 003。这运行良好。
如果我喜欢使用 sed 编辑配置文件,我需要 3 变量来执行此操作。
命令 anyname-001 -some -parameter 在我的情况下是路径的副本。我现在的路是
/etc/anyname-001、/etc/anyname-003 和 /etc/anyname-003
通过使用 sed,我还需要 3 个 IP 地址和 3 个主机名。
sed -i 's/IPADDR/'${ipaddr}'/g' /etc/anyname-${number}/config.cfg
sed -i 's/HOSTNAME/'${hostname}'/g' /etc/anyname-${number}/config.cfg
我怎样才能让我的循环同时使用所有变量。尝试很多事情。我找到了嵌套循环,但它不起作用
001 >> IP:a.a.a.a >> 主机名 aaa.aaa.aa
002 >> IP:b.b.b.b >> 主机名 bbb.bbb.bb
003 >> IP:c.c.c.c >> 主机名 ccc.ccc.cc
谢谢
【问题讨论】:
-
可以想象,您在这里可能有一个实际上是主题的问题,但现在它有点隐蔽,并且绝对不能被其他任何人重现(因为要运行您的代码,我们需要拥有一个具有相同 DNS 配置和 IP 地址的系统)。如果由于重复而关闭的问题没有帮助,请尝试创建一个Minimal, Complete, Verifiable Example——其他人可以运行代码来查看您的问题,即使他们没有相同的 IP/主机/接口配置。跨度>
-
如果您无法弄清楚如何重写问题以便其他人可以测试他们的答案,请考虑尝试为您的底层 bash 问题创建一个与主机名、IP 无关的测试用例地址等——毕竟有很多方法可以锻炼
for循环;这样做也将使您的 bash 语言问题更加清晰,因为它与您仅部分描述的更大上下文分开。如果您进行这样的重写,请@-通知我,我将反转关闭作为欺骗。