2013-05-14 50 views
0

我有一個列表,格式如下。如果我用「aaa bbb ccc」替換列表,一切正常。任何人的想法?BASH:循環讀取創建動態數組的列表

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 

在此先感謝您的任何想法...

回答

1

您可以認領線改爲

#!/bin/bash -xv 

,看看有什麼慶典嘗試運行。實際上,您正嘗試創建一個名爲array1_1.1的變量,該變量不是有效的變量名稱:不允許使用點。

+0

我在該信息的有用性讚歎不已。我可以*看到*什麼bash試圖運行?給予好評。 (在調查中,-xv也適用於'dash'(我最喜歡的腳本運行速度非常快),'zsh','ksh'以及其他所有主要的sh-variants。) – kampu 2013-05-14 09:26:57

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