【发布时间】:2018-01-08 16:15:12
【问题描述】:
希望从具有主机名、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 脚本上遇到的错误都在 echo 行上。
./touchfile.sh:第 425 行: echo:找不到命令 ./touchfile.sh:第 425 行: echo:找不到命令
对我做错了什么有帮助吗?
【问题讨论】:
-
您显示的代码不会产生该错误,这仅仅是因为您没有显示 425 行代码。您需要确保此处显示的代码会产生错误。
-
你想要
HOST=$(echo $j | cut -d: -f2)(或者你可以用 back-tics 替换 $( ) 并具有与石器时代兼容的 cmd-substitution。但我不知道如何正确处理echo "ansible_host: $IP" > $HOST由您的cmd()定义,如上定义。祝你好运。 -
谢谢!是的,函数的使用已经过时了。