BASH:循环读取创建动态数组的列表

时间:2013-05-14 09:14:25

标签: arrays bash loops

我有一个格式如下的列表。如果我用“aaa bbb ccc”替换列表,一切正常。有人有想法吗?

list=$(echo -e "1.1 1.2 mgmt")

n=0
for i in $list; do
   let "array1_$i[$n]=$(date "+%N")"
   ((++n))
done

n=0
for i in $list; do
   var=array1_$i[$n]
   echo ${!var}
   ((++n))
done

提前感谢任何想法...

2 个答案:

答案 0 :(得分:1)

您可以将shebang行更改为

#!/bin/bash -xv

查看bash尝试运行的内容。实际上,您正在尝试创建名为array1_1.1的变量,该变量不是有效的变量名称:不允许使用点。

答案 1 :(得分:1)

.不是标识符中的有效字符。

man bash

       name   A word consisting only of alphanumeric characters and underscores, and
              beginning with an alphabetic character or an underscore.  Also
              referred to as an identifier