한 변수의 이름을 사용하여 다른 변수를 참조하는 방법은 무엇입니까? [복사]

한 변수의 이름을 사용하여 다른 변수를 참조하는 방법은 무엇입니까? [복사]
a=2
pt2=3
echo $a
2
echo $pt2
3

어떻게 사용하나요?

echo $pt($a)

pt2내용을 인쇄하시겠습니까 ?

또 다른 옵션은

b=pt$a
echo $b
pt2
echo $[$b]
3

답변1

a=2
pt2=3
eval "echo \"\${pt$a}\""

3

또는:

b=pt$a
eval "echo \"\${$b}\""

3

다른 방법도 있습니다:

a=2
pt2=3
export "pt$a=$((pt$a + $(echo pt$a)))"
echo $((pt$a))

6

exporteval나중에 덜 위험한 방식으로 이 방식으로 작업할 수 있지만 필요한 경우 나중에 내보내지 않을 수 있습니다. 그리고 $((arithmetic = 할당은 ))현재 쉘의 현재 명령에 영향을 미치므로 값이 숫자인 경우 직접 변수 할당이 여전히 더 안전합니다.

변수 할당을 두 번 평가하는 데 사용되는 쉘의 .dot및 도 있습니다 .<<HEREDOCS

var1=var2 ; . <<HEREDOC /dev/stdin
    $var1=val
HEREDOC

echo $var2

val

관련 정보