如何在shell脚本中将循环输出的值存储在数组中?

时间:2014-01-29 12:58:20

标签: arrays shell scripting

在shell脚本中,我在if循环中有一个for条件的循环。

for ((init; condition; increment))
do
    if ((condition)) then
        printf ...
    fi
done

printf语句在输出上打印值。但是,我想将这些值存储在一个数组中以在另一个循环中使用。我该怎么做?

2 个答案:

答案 0 :(得分:0)

您在for loop之前初始化数组,在for loop内部继续初始化数组。

代码框架:

# initializing an array
arr=()
for ((i=0; i<=5; i++ )) do if ((...)) then arr+=($i); printf .... fi done
  • arr=()创建一个新数组
  • arr+=($i)将元素追加/添加到数组arr

答案 1 :(得分:0)

以下是解决方案:

#!/bin/bash

data=() #declare an array outside the scope of loop
idx=0   #initialize a counter to zero
for i in {53..99} #some random number range
do
    data[idx]=`printf "number=%s\n" $i` #store data in array
    idx=$((idx+1)) #increment the counter
done
echo ${data[*]} #your result

代码

  • 创建并清空数组
  • 为数组
  • 创建索引计数器
  • 将输出printf命令的结果存储在相应索引处的数组中(backquote告诉解释器这样做)