2013-09-06 7 views
0

다음 코드는 bash에서 정상적으로 실행됩니다.sh 또는 대시의 변수 변수

sms="SMSFile" 
email="EmailSubj" 
for x in sms email; do echo variable \$$x=${!x}; done; 

출력

variable $sms=SMSFile 
variable $email=EmailSubj 

입니다하지만 sh하지 bash에를 작성해야합니다. 내가 sh에 동일한 명령을 실행하면 그것은 나를

sh: 3: Bad substitution 

${!x}로 인해 오류가 있습니다. 나는 그러한 매개 변수 확장에 대해 언급하지 않은 sh의 설명서를 찾았습니다. 그래서 sh이 지원하지 않습니다. 변수 변수를 사용할 수 없다면 sh

답변

3

나는 어떤 옵션도 가지고 있지 않지만 eval을 사용한다고 생각하지 않습니다.

하는 것은 다음 :

sms="SMSFile" 
email="EmailSubj" 
for x in sms email; do eval val=\$$x; echo variable \$$x=$val; done; 

가 발생한다 : shdash 모두

variable $sms=SMSFile 
variable $email=EmailSubj 

합니다.