간접 확장은 어떤 가치를 확장하는가?

간접 확장은 어떤 가치를 확장하는가?

Bash 매뉴얼 페이지에서는 nameref가 아닌 매개변수의 간접 확장이 다음과 같이 설명됩니다.

매개변수의 첫 번째 문자가 느낌표(!)이고 매개변수가 nameref가 아닌 경우 간접 참조 수준이 도입됩니다. Bash는 나머지 인수를 확장하여 형성된 값을 새 인수로 사용하고 해당 값은 원래 인수의 확장이 아닌 나머지 확장에 사용됩니다. 이를 간접 확장이라고 합니다. 값은 물결표 확장, 매개변수 확장, 명령 대체 및 산술 확장을 거칠 수 있습니다.

하지만 마지막 문장을 재현할 수 없습니다.

settings x=y, 결과는 예상대로입니다 y=z.z=end

$ echo ${!x}
z

설정 x=y및 .y='$z'z=end

$ echo ${!x}
$z

설정 x='$y', y=zz=end.

$ echo ${!x}
-bash: $y: invalid variable name

그렇다면 문서에서 위에서 언급한 확장 주제의 가치는 무엇입니까? 내가 무엇을 놓치고 있나요?

(사용된 Bash 버전은 5.1.0(1)-릴리스(x86_64-redhat-linux-gnu)입니다.)

답변1

이는 문서 오류인 것 같습니다. 이것이 텍스트를 소개한 커밋반대 방향:

CWRU/CWRU.log소스 배포판에서 관련 추가 사항을 인용하면 다음과 같습니다.

+                                  12/18
+                                  -----
+subst.c
+       - parameter_brace_find_indir: when expanding the indirect parameter
+         to find the eventual variable name, we don't perform word splitting.
+         Make sure this does the right thing for * and @.  Fixes bug
+         reported by isabella parakiss <[email protected]>
+
+                                  12/19
+                                  -----
+doc/{bash.1,bashref.texi}
+       - indirect expansion: make sure to note that the value of the indirect
+         variable does not undergo word splitting as one of its expansions,
+         as in fix from 12/18

텍스트가 누락되었을 수 있습니다.아니요:그 가치는아니요주제....

관련 정보