eval
을 사용하지 않고 순수 쉘 (예 : 이 아닌 bash
)의 동적 이름이 지정된 변수에 임의의 값을 할당 할 수 있습니까?순수 쉘에서 동적 변수 할당
임의의 코드 실행을 허용 할 수 있으므로 eval
을 사용하지 않는 방법이 있는지 알고 싶습니다.
let
은 숫자 값으로 만 작동하는 것처럼 보입니다.
eval
을 사용하지 않고 순수 쉘 (예 : 이 아닌 bash
)의 동적 이름이 지정된 변수에 임의의 값을 할당 할 수 있습니까?순수 쉘에서 동적 변수 할당
임의의 코드 실행을 허용 할 수 있으므로 eval
을 사용하지 않는 방법이 있는지 알고 싶습니다.
let
은 숫자 값으로 만 작동하는 것처럼 보입니다.
declare
을 시도해보십시오. 즉석에서 변수를 지정할 수 있습니다.
v="test"
declare my$v="hello"
echo "$mytest"
결과 :
이hello
당신은 man declare
에서 더 많은 정보를 찾을 수 있습니다 - 나는 셸 설명서에 대한 참조를 찾을 수 없습니다.
@rhlee "순수한 껍데기"란 무엇을 의미합니까? '선언 '은'bash'확장이며 모든 POSIX 호환 쉘에서 사용할 수 없습니다. – chepner
@chepner는 rhlee가 여기에서 알림을받지 않기 때문에 질문에 더 나은 설명을합니다. – fedorqui
@chepner 예 어제 순수한 것과 그렇지 않은 것의 차이점을 발견했습니다. 이 스크립트는 cygwin에서 잘 돌아 갔지만 리눅스에서'declare : not found '를 주었다. 나는 https://wiki.ubuntu.com/DashAsBinSh를 보았고,'declare' 대신'local'을 사용하라고했습니다. 그러나 나는'local : not in function'을 얻었으므로, 전체 스크립트를 하나의 함수로 감싸서 호출하고 모든 것이 작동했습니다. Fedorqui의 답변은 여전히 순수한 셸을 지정하지 않았기 때문에 올바른 것으로 간주됩니다. – rhlee
요구 사항을 명확하게 설명해 주시겠습니까? 당신의 받아 들여진 대답 안의'declare' 명령은 POSIX'sh'의 일부가 아닌'bash' 확장이라는 점에서 "순수한 쉘"이 아닙니다. – chepner