2014-10-06 5 views
1

eval을 사용하지 않고 순수 쉘 (예 : 이 아닌 bash)의 동적 이름이 지정된 변수에 임의의 값을 할당 할 수 있습니까?순수 쉘에서 동적 변수 할당

임의의 코드 실행을 허용 할 수 있으므로 eval을 사용하지 않는 방법이 있는지 알고 싶습니다.

let은 숫자 값으로 만 작동하는 것처럼 보입니다.

+1

요구 사항을 명확하게 설명해 주시겠습니까? 당신의 받아 들여진 대답 안의'declare' 명령은 POSIX'sh'의 일부가 아닌'bash' 확장이라는 점에서 "순수한 쉘"이 아닙니다. – chepner

답변

1

declare을 시도해보십시오. 즉석에서 변수를 지정할 수 있습니다.

v="test" 
declare my$v="hello" 
echo "$mytest" 

결과 :

hello 

당신은 man declare에서 더 많은 정보를 찾을 수 있습니다 - 나는 셸 설명서에 대한 참조를 찾을 수 없습니다.

+0

@rhlee "순수한 껍데기"란 무엇을 의미합니까? '선언 '은'bash'확장이며 모든 POSIX 호환 쉘에서 사용할 수 없습니다. – chepner

+0

@chepner는 rhlee가 여기에서 알림을받지 않기 때문에 질문에 더 나은 설명을합니다. – fedorqui

+0

@chepner 예 어제 순수한 것과 그렇지 않은 것의 차이점을 발견했습니다. 이 스크립트는 cygwin에서 잘 돌아 갔지만 리눅스에서'declare : not found '를 주었다. 나는 https://wiki.ubuntu.com/DashAsBinSh를 보았고,'declare' 대신'local'을 사용하라고했습니다. 그러나 나는'local : not in function'을 얻었으므로, 전체 스크립트를 하나의 함수로 감싸서 호출하고 모든 것이 작동했습니다. Fedorqui의 답변은 여전히 ​​순수한 셸을 지정하지 않았기 때문에 올바른 것으로 간주됩니다. – rhlee