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