gpt4 book ai didi

linux - Bash:从主机列表中读取,在添加内容时创建/触摸文件

转载 作者:太空宇宙 更新时间:2023-11-04 10:12:30 26 4
gpt4 key购买 nike

希望从具有主机名 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:第 425 行: echo:找不到命令./touchfile.sh:第 425 行: echo:找不到命令

对我做错了什么有什么帮助吗?

最佳答案

不要将值存储在变量中;使用此处文档。另外,不需要数组;只需为每个字段提供 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

关于linux - Bash:从主机列表中读取,在添加内容时创建/触摸文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48154072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com