インデックスエコー変数

インデックスエコー変数

ループ内にvarを次のように設定しました。

eval "PB_$i=`cat btc_pub_$i.key`"

ここで $i はループのインデックスです。

echoやprintfをしたい

$PB_$i ($PB_0,$PB_1, etc)

私は前に試しました

echo $PB_${i} 

しかし、うまくいきません

ベストアンサー1

探しているのが逆参照のようです。

$ foo=bar
$ bar=somewords
$ printf "The value of %s is '%s'\n" "${foo}" "${!foo}"
The value of bar is 'somewords'

$ var_1=foo
$ var_2=bar
$ for i in 1 2; do v="var_${i}"; printf "%s\n" "${!v}"; done
foo
bar

ただし、一連の数値サフィックス変数を使用する代わりに、配列を調べることをお勧めします。

$ var=("foo" "bar") # var[0]=foo; var[1]=bar
$ for v in ${var[@]}, do printf "%s\n" "${v}"; done
foo
bar

おすすめ記事