2014-06-16 4 views
2

다른 변수 FOO의 이름이 들어있는 변수 VAR이있는 쉘 스크립트 (#!/bin/sh)를 작성하고 있는데,이 변수는 다시 BAR로 설정됩니다.쉘 스크립트 변수 리플렉션

FOO=BAR 
VAR=FOO 

나는 VAR에 명명 된 변수의 값을 얻으려면, 그래서 뭔가 같은 :

echo "${$VAR}" 

하지만 그건 작동하지 않습니다. 제안? 배쉬에서

+0

셸이 Bash 인 경우 제안 된 복제본이 유효합니다. 셸이 Bash가 아니라면 적절한 응답이 아니기 때문에 적절한 복제본이 아닙니다. 대체 메커니즘 인 'eval'을 언급하지 않습니다. –

+0

echo "$ {! VAR}"이라고 말하면서 해결했습니다. 고맙습니다. – user3739584

+1

그런 경우 Korn Shell 대신 Bash를 사용해야합니다. 사용하고있는 셸을 정확하게 사용하면 좋은 답변을 얻을 수있는 가능성이 높아집니다. –

답변

4

: 배쉬없이

echo "${!VAR}" 

(너무 배쉬에서 작동하지만) :

eval echo "\${$VAR}" 

가주의 : eval 아주 쉽게 문제로 당신을 실행할 수있는 매우 일반적인 메커니즘입니다. 여기서는 잘 작동하지만 더 일반적으로 사용하는 것에 대해서는주의하십시오.