读取bash数组(不进入)

时间:2016-05-28 21:42:20

标签: linux bash macos while-loop

我正在尝试使用while read的数组,但整个数组会立即输出。

#!/bin/bash

declare -a arr=('1:one' '2:two' '3:three');

while read -e it ; do
    echo $it
done <<< ${arr[@]}

它应该单独输出每个值(但不是),所以也许在读取时不是热门票?

2 个答案:

答案 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