我正在尝试使用while read
的数组,但整个数组会立即输出。
#!/bin/bash
declare -a arr=('1:one' '2:two' '3:three');
while read -e it ; do
echo $it
done <<< ${arr[@]}
它应该单独输出每个值(但不是),所以也许在读取时不是热门票?
答案 0 :(得分:10)
对于这种情况,使用for
循环更容易:
$ declare -a arr=('1:one' '2:two' '3:three')
$ for it in "${arr[@]}"; do echo $it; done
1:one
2:two
3:three
while read
方法非常有用(a)当您想要从文件中读取数据时,以及(b)当您想要读取nul或换行符分隔的字符串时。但是,在您的情况下,您已将数据放在bash
变量中,for
循环更简单。
答案 1 :(得分:2)
可以通过while循环
#!/bin/bash
declare -a arr=('1:one' '2:two' '3:three');
len=${#arr[@]}
i=0
while [ $i -lt $len ]; do
echo "${arr[$i]}"
let i++
done