viaの内容にアクセスするには、my_stacklist
so値を使用して変数を定義したいと思います。{mypc}_stacklist
mypc=kast
kast_stacklist
my_stacklist
動的変数に関する以前の質問のように見えますが、declare
orでは解決できませんeval
。
最新のオペレーティングシステムがインストールされているRPi 4でbashを使用しています。
# want to have a my_stacklist for the current mypc and associating stacklist {mypc}_stacklist
mypc=kast
kast_stacklist=( stack1 stack2 stack3 stack4 )
screen_stacklist=( stack1 stack2 stack3 )
# First attempt
xxxx=$(eval "echo ${mypc}_stacklist")
my_stacklist=$(eval "echo \$$xxxx")
printf "my_stacklist=${my_stacklist[@]}"
# Second attempt
#declare -n my_stacklist2=${xxxx[@]}
declare -n my_stacklist2=${xxxx}
printf "my_stacklist=${my_stacklist[@]}"
# i only get the first item instead of all items
ベストアンサー1
名前参照の使用:
mypc=kast
kast_stacklist=(k1 k2 k3)
other_stacklist=(o1 o2 o3)
declare -n mystacklist="${mypc}_stacklist"
for i in "${!mystacklist[@]}"; do
printf '%d\t%s\n' $i "${mystacklist[i]}"
done
0 k1
1 k2
2 k3