동적 변수 참조

동적 변수 참조

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

관련 정보