对于BASH这里的循环文档

时间:2015-10-03 21:55:08

标签: bash loops

希望有人可以提供帮助。我有一个文件中的主机列表,我想要做的是获取主机名并使用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循环中编写变量时,我会在每个标题下获得一个唯一的条目?

提前致谢!

1 个答案:

答案 0 :(得分:2)

您不需要cat和此处的文档:

nb=1
while read -r ip vmhost; do
    printf '[master%d]\n%s\n\n' "$((nb++))" "$vmhost"
done < ./hosts.txt > ./file