2015-10-03 36 views
1

希望有人可以提供幫助。我有一個文件中的主機列表,我想要做的是獲取主機名,並使用BASH中的here文檔將其插入到模板中。在BASH for循環這裏文檔

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 

如果我把這裏的文檔放到while循環中,它會在master1 & master2下寫循環中的最後一個主機。

cat > ./file << EOF 

[master1] 
host2 

[master2] 
host2 

EOF 

我該如何確保當我在while循環中編寫變量時,我在每個標題下獲得唯一條目?

在此先感謝!

+0

只是做它在'awk'?或者這是一個學習練習(可能自我分配;-))。祝你好運。 – shellter

回答

2

你不需要cat這裏文檔:

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

不錯,再次感謝。這就是我想要的。 –