2016-05-09 5 views
0
303 for count in "${nodeof[@]}"; do 
    304  lines=`GetNodeMemory $count` 
    305  printf %s "$lines" | while IFS= read -r line; do \ 
    306  { 
    307   key=`echo $line | awk -F':' '{print $1}' | cut -d' ' -f3` 
    308   [[ -z ${key} && ${key} ]] && continue 
    309   for chk in "${MemVar[@]}"; do 
    310    [[ "${key}" == "${chk#*:}" ]] && break 
    311   done 
    312   #echo "ke:${chk#*:} - ind:${chk%%:*}" 
    313   NodeMem[$count,${chk%%:*}]=`echo $line \ 
    314    | /bin/grep -i "${key}" | awk -F':' '{print $2}' \ 
    315    | cut -d' ' -f2` 
    316  #echo "${chk#*:} ${NodeMem[$count,${chk%%:*}]}" 
    317  chk="" 
    318  } done 
    319 done 
    320 
    321 for count in "${nodeof[@]}"; do 
    322  for chk in "${MemVar[@]}"; do 
    323   echo "${NodeMem[${count},${chk%%:*}]}" 
    324  done 
    325 done 

ここでNodeMemは2次元配列で、#316行目を使用して印刷すると、配列値は正常に印刷されます。しかし、行番号323を使用して印刷すると、出力は空行に過ぎません。ここで何が起きてるの?助けてくれてありがとう。Bash 2次元配列は永続的ではない

+0

まず、あなたはコメントを使用する方法を学習を開始する必要がある上、この前の記事を参照してください。 – SaintHax

+1

ありがとう@ user000001、私はパイプラインを見落とし、パイプラインのメカニズムを一時ファイルの書き込み/読み取りに置き換えました。残念ながら、現在のOSのbashは4.0です。私は最後のパイプオプションを使用できません。問題が解決しました。 – Userdijkstra

答えて

1

Bashは多次元配列をサポートしていません。 foo,barを割り当てるときは、インデックス0を評価しています。使用している構文では、配列[1,5]は配列[5]と同じです。配列[2,5]も配列[5]と同じです。

はどのように偽のmultidimensinal配列 Bash two dimensional arrays

関連する問題