我试图使用重定向(学习目的),并想知道我如何引用这个数组,以便我可以迭代它。我知道还有其他方法,但我试图坚持重定向。
#!/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[@]}
答案 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})