${!FOO}
이중 치환을 수행 bash
즉, FOO의 (문자열) 값을 가져와 변수 이름으로 사용합니다.
zsh
이 기능을 지원하지 않습니다.
이 작업을 동일하게 만드는 방법이 있습니까? bash
와 zsh
?
배경:
다음과 같은 환경 변수 목록이 있습니다.
PATH MAIL EDITOR
먼저 변수 이름을 인쇄 한 후 값을 인쇄하려고합니다.
이것은 작동 bash
하지만 작동 하지 않습니다 zsh
.
for VAR in LIST
do
echo $VAR
echo ${!VAR}
done
와 함께 "오래된 방법"이 가능해야 eval
하지만 작동시키지 못했습니다.
for VAR in LIST
do
echo $VAR
echo `eval \$$VAR`
done
나는 왜 내가 필요 ${${VAR}}
하거나 ${${${VAR}}}
필요하다면 임의의 깊은 대체를 할 수 없는지 결코 이해하지 못할 것이므로 그에 대한 설명도 좋을 것입니다.
bash
실제로 동일한 기능 (및 훨씬 더)이 있으며 다른 패턴 만 사용합니다 ${(p)FOO}
.
(e)
매개 변수 확장 플래그는 zsh-2.6-beta17 (1996 년 5 월), (P)
3.1.5-pws-7 (1999)의 플래그로 추가되었습니다 . bash ${!var}
는 2.0 버전입니다 (1996 년 12 월).