動的変数参照

動的変数参照

viaの内容にアクセスするには、my_stacklistso値を使用して変数を定義したいと思います。{mypc}_stacklistmypc=kastkast_stacklistmy_stacklist

動的変数に関する以前の質問のように見えますが、declareorでは解決できません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

おすすめ記事