如何在shell脚本中将命令的输出拆分为数组



我执行了一个生成格式数据的命令

111111
222222
333333
444444
555555

我在命令中定义了一个变量,并只是回显处理该数据的变量

现在我想将这些数据存储到一个数组中,在shell脚本中

my_array[0]=111111
my_array[1]=222222
.....
so on

像这个

我已经尝试了一些方法,但它们都是存储索引[0]。我想对这些数据进行一些算术运算,这就是为什么我希望它成为数组形式的原因

my_array=()
select sum(a1) sum , date(create_timestamp)  date from student where date(create_timestamp) >= 'YYYY-MM-DD' and  date(create_timestamp) <= 'YYYY-MM-DD' group by date" | sed '1d'| while read sum date; do
# echo $sum
# echo $date
my_array=( "$sum" )
echo $my_array
#        echo ${my_array[0]}
done

我认为你的意思是my_array+=( "$sum" )添加元素而不是覆盖整个数组,但如果你信任输出格式,为什么不一次分配所有元素,而不是使用read循环呢?

mapfile -t my_array < <( 
select sum(a1) sum , date(create_timestamp) date
from student 
where date(create_timestamp) >= 'YYYY-MM-DD' 
and  date(create_timestamp) <= 'YYYY-MM-DD'
group by date" | sed '1d' 
)

最新更新