我在循环内设置 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