비슷한 문제에 대해 질문이 있습니다.이것질문이 있는데 지역 변수를 기반으로 전역 변수를 호출해야 합니다.
테스트, 스테이징 또는 프로덕션을 스크립트에 변수로 전달하고 싶다고 가정하면 다음과 같이 할 수 있습니다.
#!/bin/bash
env=$1
export ENV_$env=some_param
echo $ENV_${env}
그러나 전역 변수는 전혀 검색되지 않는 것 같습니다.
# ./script.sh test
test
이 스크립트의 사용 사례는 병렬로 작동하는 프로세스에 대한 격리를 제공하는 것입니다.
답변1
답변2
export
호출 범위 내에서 실행해 보세요 eval
.
eval export ENV_${env}=some_param
ENV_${env}
이렇게 하면 쉘에 할당을 시도하기 전에 예상한 이름 중 하나로 쉘이 적절하게 확장됩니다.
eval
변수에 저장된 값을 검색할 때 다음도 사용해야 합니다.
eval echo \$ENV_$env
백슬래시를 참고하세요. 이는 쉘이 내장 변수를 사용하여 해당 부분을 확장할 $ENV_
때까지 존재하지 않는 변수를 확장하려고 시도하는 것을 방지합니다 . 이 확장의 결과는 궁극적으로 에 전달되며 , 이는 동적 변수의 전체 이름을 가져와 확장하여 이전에 저장한 값을 생성합니다.$env
eval
echo