Bashで行列値を変数に割り当てる方法

Bashで行列値を変数に割り当てる方法

50 x 1以下のようにUbuntuで行列を作成しました。

#!/bin/bash
declare -A matrix
num_rows=1
num_columns=50

for ((n=0;n<=(($num_columns-1));n++)) do
for ((i=1;i<=num_rows;i++)) do
    matrix[$i,$j]=net$(($n+1))
    #echo "${matrix[$i,$j]}" >> temp
done
done

50 x 1行列の各要素を変数(たとえば「q」)に割り当てたいと思います。たとえば、q1 = net1、q2 = net2、... q50 = net50です。 Linuxでこれを達成する方法を知っている人はいますか?よろしくお願いします。

答え1

要求に応じてプレフィックス付きの変数のリストを作成し、qその後にシーケンス番号(c)を付け、それを配列変数に割り当てます。

#!/bin/bash
declare -A matrix
num_rows=1
num_columns=50

c=1

for ((n=0;n<=(($num_columns-1));n++)) do
    for ((i=1;i<=num_rows;i++)) do
        matrix[$i,$j]=net$(($n+1))
        declare "q$c=${matrix[$i,$j]}"
        ((c++))
    done
done

これを出力するには、次のように使用できます。

for ((i=1;i<(($num_columns-1));i++)) do
    var=q$i
    echo "${!var}"
done

関連情報