希望有人可以提供帮助。我有一个文件中的主机列表,我想要做的是获取主机名并使用BASH中的here文档将其插入模板。
hosts文件如下所示:
HOSTS.TXT
1.2.3.4 host1
5.6.7.8 host2
然后,我使用以下BASH阅读本文档:
while read LINE; do
vmhost=$(echo "$LINE" | awk '{print $2}')
done < ./hosts.txt
我要做的是将每个主机(host1,host2)并将其插入到文档中,如下所示:
cat > ./file << EOF
[master1]
host1
[master2]
host2
EOF
如果我将here文档放入while循环中,它将在master1和amp;下面的循环中写入最后一个主机。 master2。
cat > ./file << EOF
[master1]
host2
[master2]
host2
EOF
如何确保当我在while循环中编写变量时,我会在每个标题下获得一个唯一的条目?
提前致谢!
答案 0 :(得分:2)
您不需要cat
和此处的文档:
nb=1
while read -r ip vmhost; do
printf '[master%d]\n%s\n\n' "$((nb++))" "$vmhost"
done < ./hosts.txt > ./file