我有一个主机名列表,例如:
hostnames = (host1 host2 host3)
此外,我正在尝试将这些主机名解析为IP:
for host in ${hostnames[@]}; do
var=`doing some stuff` # It returns IP address with odd spaces
ips+=`(echo $var|xargs)` # Removes odd spaces
它可以工作,但是以以下格式返回:
127.0.0.1127.0.0.2127.0.0.3
我希望有ips
使其可以迭代并使用索引进行获取:
echo ${ips[2]} # Should return 127.0.0.3
for (( i=0; i<${#ips[@]}; i++ )); do
echo ${ips[i]}
等
如何以正确的方式添加这些IP,以便可以迭代这些值并通过索引提取它们?
答案 0 :(得分:0)
等号周围不应有空格:
hostnames=(host1 host2 host3)
要将条目添加到数组,需要在反引号 之外加括号:
ips+=(`echo $var|xargs`)
一种更简单的删除空格的方法是用${var//pattern/string}
替换。由于它避免了不必要的子进程,因此速度更快。
ips+=("${var// }")