希望从具有主机名ip的主机列表中读取。想为主机名创建一个文件并将ip添加到其中。这是针对ansible host_var文件的。
HOSTS="\
10.10.10.1,host1 \
10.10.10.2,host2 \
10.10.10.3,host3 \
"
cmd() {
touch /tmp/test/$HOST
}
for j in $HOSTS; do
IP='echo $j | cut -d: -f1'
export HOST='echo $j | cut -d: -f2'
cmd echo "ansible_host: $IP" > $HOST
done
更简单的版本..
HOSTS="10.10.10.1,host1
10.10.10.2,host2
10.10.10.3,host3"
while IFS="," read -ra line; do
echo "ansible_host: '${line[0]}'" > "${line[1]}"
done <<< "$HOSTS"
虽然我省略了400个主机。我在这两个.sh脚本上遇到的错误都在回显线上。
./ touchfile.sh:line 425:找不到echo:命令 ./touchfile.sh:line 425:echo:未找到命令
对于我做错什么的任何帮助?
答案 0 :(得分:1)
不要将值存储在变量中;使用这里的文件。此外,不需要阵列;只需为每个字段分别提供read
个名称。
while IFS=, read -r addr name; do
printf "ansible_host: '%s'\n" "$addr" >> "$name"
done <<EOF
10.10.10.1,host1
10.10.10.2,host2
10.10.10.3,host3
EOF