本文介绍了BASH:如何在一个循环中创建一个动态数组名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
下面是我的尝试:
n=0
for i in aaa bbb ccc; do
array${i}[$n]=$(date "+%N")
((++n))
done
n=0
for i in aaa bbb ccc; do
echo ${array${i}[$n]}
((++n))
done
任何想法如何使动态数组名工作?
非常感谢!
any ideas how to make the dynamic array name work?thanks a lot!
推荐答案
您可以使用间接扩展:
#!/bin/bash
# create the arrays
n=0
for i in aaa bbb ccc; do
let array$i[$n]=$(date "+%N")
((++n))
done
# display what we did
n=0
for i in aaa bbb ccc; do
var=array$i[$n]
echo ${!var}
((++n))
done
请注意,这只会造成数组变量的 arrayaaa [0] 的 arraybbb [1] 的和的 arrayccc [2] 和不可以(正如您所料)的 arrayaaa [0] 的 arrayaaa [1] 的 arrayaaa [2] 的 arraybbb [0] 的 arraybbb [1] 的 arraybbb [2] 的 arrayccc [0] 的 arrayccc [1] 和 arrayccc [2] 的
Note that this will only create array variables arrayaaa[0], arraybbb[1] and arrayccc[2], and not (as you might expect) arrayaaa[0], arrayaaa[1], arrayaaa[2], arraybbb[0], arraybbb[1], arraybbb[2], arrayccc[0], arrayccc[1], and arrayccc[2].
这篇关于BASH:如何在一个循环中创建一个动态数组名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!