Bash에서 다른 변수를 기반으로 변수를 참조하는 방법은 무엇입니까? 예를 설정하겠습니다.
package="foobar"
# the variable I wish to reference is $foobar_darwin_amd64
# thus trying:
echo "$package_darwin_amd64"
그러나 이것은 작동하지 않습니다.
답변1
쉘이 ${!varname}
간접적인 형태를 지원하는 경우 다음을 수행할 수 있습니다(@Barmar가 제안한 대로).
$ foobar_darwin_amd64=pinto
$ package=foobar
$ varname="${package}_darwin_amd64"
$ echo ${!varname}
pinto
그렇지 않으면 다음을 사용할 수 있습니다 eval
.
$ foobar_darwin_amd64=pinto
$ package=foobar
$ eval echo \$${package}_darwin_amd64
pinto
즉, eval
사용과 관련된 몇 가지 위험이 있습니다.이 링크를 봤어더 많은 토론을 해보세요.
답변2
이것이 나를 위해 일한 솔루션입니다.
VARNAME="${package}_darwin_amd64"
echo "${!VARNAME}"
답변3
Bash v4에서는 "이름 참조"
$ foobar_darwin_amd64=pinto
$ package=foobar
$ declare -n var=${package}_darwin_amd64
$ echo "$var"
pinto
변하기 쉬운이름당신이 구축한 것은 다음을 통해 얻을 수 있습니다.간접적인변수 확장 구문:
$ echo "${!var}"
foobar_darwin_amd64