Bashを使用して多次元配列を作成する必要がありますが、Bashには多次元配列と同じものがないことを読んでいました。
可能なデータ、形状、必要なデータは次のとおりです。これはbash配列ではありません。
DATACOL = [
"1"=>("Santiago","Barcelona","AWG","6792992","Male"),
"2"=>("Santi","Texas","BGG","6792992","Male"),
"3"=>("Tiago","Rio","GHA","6792992","Female")
]
簡単なスクリプトで同様の操作をどのように実行できますか?私は初めてbashに触れました。
ベストアンサー1
知りません。多次元配列などが必要な場合は、シェルではなく実際のプログラミング言語を使用する必要があることを意味します。シェルは実際にはプログラミング言語ではありませんが、1つとして(悪用)使用することができますが、これは単なる目的でのみ使用する必要があります。残念ながら、多くの人はシェルがあらゆる状況に適したツールだと思うようです。これにより、特定の目的のために設計されたツールを使用するのではなく、シェルができない、または非常に適切に実行できないことを試みるのに多くの労力が浪費されます。特定の状況。働く
つまり、次を使用して何かを1つにまとめることができます。名前参照:
宣言またはローカル組み込み機能(Bash組み込み機能を参照)の-nオプションを使用して、変数にnameref属性を割り当てることで、他の変数への参照またはnamerefを生成できます。これにより、変数を間接的に操作できます。 nameref変数が参照、割り当て、設定解除される、またはその属性が変更されるたびに(nameref属性自体を使用または変更する場合を除く)、nameref変数の値で指定された変数に対して実際にアクションが実行されます。 nameref は通常、シェル関数の名前が関数に引数として渡される変数を参照するために使用されます。たとえば、変数名をシェル関数の最初の引数として渡す場合は、次のようにします。
declare -n ref=$1
関数内で、最初のパラメータとして渡された変数名を値として持つnameref変数refが生成されます。 refへの参照と割り当て、およびその属性への変更は、名前が$ 1に渡される変数への参照、割り当て、および属性の変更として扱われます。
たとえば、次のようになります。
#!/bin/bash
data1=("Santiago" "Barcelona" "AWG" "6792992" "Male")
data2=("Santi" "Texas" "BGG" "6792992" "Male")
data3=("Tiago" "Rio" "GHA" "6792992" "Female")
datacol=("data1" "data2" "data3")
for arrayName in "${datacol[@]}"; do
declare -n array="$arrayName"
echo "The second element of the array '$arrayName' is: ${array[1]}"
done
次を生成します。
$ foo.sh
The second element of the array 'data1' is: Barcelona
The second element of the array 'data2' is: Texas
The second element of the array 'data3' is: Rio
本当に複雑で壊れやすく、努力する価値はありません。代わりに、実際のスクリプト言語を使用してください。