Bash에서 변수 값이 아닌 변수 이름을 어떻게 에코할 수 있나요?

Bash에서 변수 값이 아닌 변수 이름을 어떻게 에코할 수 있나요?

varbash에 변수가 있다고 가정해 보겠습니다 . 나는 그것에 가치를 부여할 수 있다. 예를 들어 문자열로 만들겠습니다.

var="Test"

나는 가 갖고 있는 가치가 아닌 의 echo이름을 원한다 . (후자를 로 할 수 있지만 실제로는 전자를 하고 싶습니다.)varvarecho $var

SO의 이 질문에 대한 답변를 사용하라고 하는데 echo ${!var}그렇게 하면 echo는 빈 줄만 반환합니다. 예를 들어, 이 bash 스크립트는

#!/bin/bash

echo "Hi"
var="Test"
echo ${!var}
echo "Bye"

다음 출력을 반환합니다.

Hi

Bye

사이에 빈 줄만 있으면안녕그리고안녕, 대신에var. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

나는 뛰고있어배쉬 4.1.5(1)~에우분투 10.04.4.

답변1

그만큼쉘 매개변수 확장 ${!name@}또는${!이름*}트릭을 할 수 있었고,

$ foo=bar
$ var_name=(${!foo@})
$ echo $var_name" = "$foo
foo = bar

실현 가능하지만 이것의 유용성을 상상할 수 없습니다 ...

답변2

단순히 정적 변수 이름을 출력하려면 $-sign을 이스케이프 처리하면 됩니다.

echo \$var

관련 정보