BASH:如何在一个循环中创建一个动态数组名称 [英] BASH: how to create a dynamic array name in a loop

查看:296
本文介绍了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:如何在一个循环中创建一个动态数组名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆