Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

(bash) indirect referencing of array

3 views
Skip to first unread message

NIDE Naoyuki

unread,
Jun 20, 2009, 1:01:59 PM6/20/09
to
新出@奈良女子大学です。

bash -c 'a=b; b[3]=c; a[3]=d; d=e; echo ${!a[3]}'

これは(少なくとも手元のbash 3.1.17では)「e」と出力します。そうではなく
「c」と出力したい(つまり配列要素を配列名で間接参照したい)のですが、どう
すればいいのでしょうか。とりあえず、evalを使う方法しか思い付きません。

ni...@ics.nara-wu.ac.jp

NIDE Naoyuki

unread,
Jun 21, 2009, 1:44:36 AM6/21/09
to
In article <0906210201...@azusa.ics.nara-wu.ac.jp>, I write:
> bash -c 'a=b; b[3]=c; a[3]=d; d=e; echo ${!a[3]}'
>
> これは(少なくとも手元のbash 3.1.17では)「e」と出力します。そうではなく
> 「c」と出力したい(つまり配列要素を配列名で間接参照したい)のですが、

自己フォローです。間接参照に使う変数の値(上の例ではa)に「[3]」まで含め
てしまえばいいようですね。つまり

bash -c 'a=b[3]; b[3]=c; echo ${!a}'

のような具合です。何だかなあとは思いますけど。

bash -c 'a=b; b[3]=c; echo ${!{a}[3]}'

を許してくれればいいのにと思うんですが、現実にはエラーになっちゃいますね。

ni...@ics.nara-wu.ac.jp

たけおか

unread,
Jun 21, 2009, 3:29:27 AM6/21/09
to
おお、スパムで無い投稿がっ!
しかし、bashもなんも分からないので、この投稿はスパムと同値なものに…

shとか、LLの類は、変な記号や、間接参照の記法が直感的に分かりにくいことが多いような気がしますが…
と、ぎりぎり lang.misc 的に引き戻してみるです。

たけおか@AXE (生きてました)

NIDE Naoyuki

unread,
Jun 22, 2009, 11:30:00 PM6/22/09
to
In article <eec21874-a798-4fd0...@d25g2000prn.googlegroups.com>,
take...@gmail.com writes:
> しかし、bashもなんも分からないので、この投稿はスパムと同値なものに…

スパムと同値ですみませんです。

# そうか、fj.unix.shellsというものがあったんだ。すみません。fjのニュース
# グループ構成をすっかり思い出せなくなってしまってます。まあbashも言語、
# てえことでお許し下さい。

> shとか、LLの類は、変な記号や、間接参照の記法が直感的に分かりにくいことが多いような気がしますが…
> と、ぎりぎり lang.misc 的に引き戻してみるです。

bashだと後付けで構文の作られた配列とか間接参照とかが特にわかりにくいで
すね。perlも、やはり後付けのリファレンスあたりはちょっと苦手です。

ni...@ics.nara-wu.ac.jp

0 new messages