그냥 간단한 질문bash에서 다른 변수 이름의 일부로 변수를 사용하는 방법은 무엇입니까?
좀 배열을 가지고 :
a=0
echo ${array_"$a"[0]}
나쁜 대체 오류가 발생했습니다 :
array_0=(1 2 3)
array_1=(1 2 3)
.......
나는 변수를 가지고있다. 누구든지 올바른 구문을 알고 있습니까?
그냥 간단한 질문bash에서 다른 변수 이름의 일부로 변수를 사용하는 방법은 무엇입니까?
좀 배열을 가지고 :
a=0
echo ${array_"$a"[0]}
나쁜 대체 오류가 발생했습니다 :
array_0=(1 2 3)
array_1=(1 2 3)
.......
나는 변수를 가지고있다. 누구든지 올바른 구문을 알고 있습니까?
당신은 eval
를 사용할 수 있습니다
#!/bin/bash
array_0=(1 2 3)
array_1=(4 5 6)
array_2=(7 8 9)
for a in {0..2} ; do
for i in {0..2} ; do
eval 'echo ${'"array_$a[$i]"'}'
done
done
본이 카토의 구문이 약간 더 자세한이지만, echo
문 자체가 더 해독입니다. 당신은이 두 라인 이중 for
루프의 내부 부품을 교체 :
array_a=array_$a[$i]
echo ${!array_a}
당신은 내가 방지하기 위해 첫번째 달러 기호 앞에 역 슬래시를 추가했다 그 eval
echo $(eval echo \${array_$a[0]})
주를 사용할 수 있습니다 그 보간에서 껍질.
물론 어레이의 모든 목적은 변수 보간을 원래의 Bourne 셸로 배열을 필요로 할 때와 같이해야만했던 것처럼 모든 오류와 에코의 귀찮음없이 할 수있게하는 것입니다. 첫 번째 문자는 변수를 평가하고 다음과 같은 결과를 사용하여 당신은 간접의 추가 레벨을 사용할 것을 나타냅니다으로
array_a=array_$a[0]
echo ${!array_a}
!
: 당신이 할 수있는
것은이 구문을 사용하는 것입니다 표현.
자체가 배열 인 경우 어떤 항목인지 압니까? 예를 들어, $ a를 $ {array_2 [$ j]} –
으로 바꿉니다. @HaoShen : 두 가지 방법 모두 문제가 없습니다. – jxh
안녕하세요. 고맙습니다. 방금 막혔다. 변수에 결과를 지정하려면 어떻게해야합니까? 예를 들어, eval 'result = $ {' "array_ $ a [$ i]" '}'. 그것은 작동하지 않습니다 ... 내 연속 질문에 대한 미안 ... –