Bash 拡張の助けが必要です。
配列値GNU bash 5.1.0を検索したいです。配列名は変数でなければなりません。 bashで変数を参照する「ただ」です。
$gral変数には名前を持つ「armin」という配列があります(うまくいきます)。
gral="armin"
課題:
declare -a ${gral}[1]="milk"
declare -a ${gral}[2]="cow"
declare ${gral}[7]="budgie"
declare ${gral}[9]="pla9ne"
美しい。
配列が存在します。
$ echo ${armin[@]}
milk cow budgie pla9ne
配列インデックスが存在します。
$echo ${!armin[@]}
1 2 7 9
配列とインデックスは大丈夫です。
配列を参照して配列を検索したいと思います。変数に名前を付ける、手動ではありません。
以前に設定され使用されていた多くの変数があります。
$ echo $gral
armin ## name of our bash array
とても良い - 今までは。
変数を使用せずに違いを表示するには:
echo ${armin[@]}
milk cow budgie pla9ne
次に、変数(gral)を参照して名前(armin)を呼び出してみてください。
$ echo ${$gral[@]}
-bash: ${$gral[@]}: wrong substitution.
$echo ${"$gral"[@]}
-bash: ${"$gral"[@]}: wrong substitution.
echo ${"gral"[@]}
-bash: ${"gral"[@]}: wrong substitution.
echo ${${gral}[@]}
-bash: ${${gral}[@]}: wrong substitution.
すべて失敗しました。 「eval」も試しました。関連(statement-A)を使用しても違いはありません。
注:索引付けはこの方法で問題なくうまく機能します。名前が問題ですね。
何か抜けていると思います。おそらく答えは以前に説明されたでしょう。私は配列の変数に関する興味深い内容をたくさん見つけましたが、私の課題に対する答えを特定できませんでした。
できますか?配列名を変数として参照して、配列を検索する用語を見つけるのに役立ちます。?
ベストアンサー1
namerefを使用する(Bash> = 4.3):
$ armin=(foo bar doo)
$ declare -n gral=armin # 'gral' references array 'armin'
$ gral[123]=quux # same as 'armin[123]=quux'
$ echo "${gral[@]}"
foo bar doo quux
$ echo "${gral[1]}"
bar
$ echo "${!gral[@]}" # listing the indexes works too
0 1 2 123
また見なさい:Bashはポインタの使用をサポートしていますか?