将bash / redirection中的数组引用到循环

时间:2014-11-05 00:40:03

标签: arrays bash redirect

我试图使用重定向(学习目的),并想知道我如何引用这个数组,以便我可以迭代它。我知道还有其他方法,但我试图坚持重定向。

#!/bin/bash
count=0
for i in  10.10.{0..255}.{0..255}
do
ips[$count]=$i
let count+=1
done

echo -e "$count = count\n" #test code for amount

#problem code: trying to feed the array to the while loop via redirection
while read $element; do
echo -en "$element\n"
done < ${ips[@]}

1 个答案:

答案 0 :(得分:1)

使用<<<重定向字符串(接受文件名的副<)。这不是循环数组的最自然方式:您还必须使用read -d' '来分隔空格而不是换行符。

while read -d' ' $element; do
    echo -en "$element\n"
done <<< "${ips[@]}"

为了比较,在数组上循环的更惯用的方法是:

for ip in "${ips[@]}"; do
    echo -en "$ip\n"
done

此外,为了它的价值,您可以将第一个循环简化为:

for i in 10.10.{0..255}.{0..255}; do
    ips+=($i)
done

甚至简单地说:

ips=(10.10.{0..255}.{0..255})