간접 확장이란 무엇입니까? $ {! var *}는 무엇을 의미합니까?
" 초보자를위한 Bash 가이드 "를 읽고 있습니다. 그것은 말한다 :
의 첫 문자
PARAMETER
가 느낌표 인 경우 Bash는 나머지에서 형성된 변수의 값을 변수PARAMETER
이름으로 사용합니다. 그런 다음이 변수가 확장되고 해당 값이PARAMETER
자체 값이 아닌 나머지 대체에서 사용 됩니다. 이를 간접 확장이라고합니다.
주어진 예는 다음과 같습니다.
franky ~> echo ${!N*} NNTPPORT NNTPSERVER NPX_PLUGIN_PATH
나는 여기서 잘 이해하지 못한다.
나머지에서 형성된 변수의 값
PARAMETER
은 PARAMETER
그냥 !N*
다음
나머지
PARAMETER
입니다 N*
. 이것이 어떻게 변수를 형성 할 수 있습니까? Bash가 가능한 모든 명령을 검색 했습니까?
bash
매뉴얼 페이지 를 읽으면 기본적으로 진술 한 내용을 확인합니다.
매개 변수의 첫 번째 문자가 느낌표 (
!
) 인 경우 변수 간접 레벨이 도입됩니다. Bash는 나머지 매개 변수에서 형성된 변수의 값을 변수 이름으로 사용합니다. 그런 다음이 변수가 확장되고 해당 값이 매개 변수 자체의 값이 아닌 나머지 대체에서 사용됩니다. 이를 간접 확장이라고합니다.
그러나 거기에서 읽기 :
이에 대한 예외 는 아래 의 확장
${!prefix*}
및${!name[@]}
설명입니다.
${!prefix*}
접두사와 일치하는 이름입니다. 이름이 접두사로 시작하고IFS
특수 변수 의 첫 문자로 구분 된 변수 이름으로 확장됩니다 .
즉, 특정 예 ${!N*}
는 인용 한 규칙에 대한 예외 입니다. 그것은 않습니다 , 그러나, 작업 등 예상되는 경우에 광고로 :
$ export xyzzy=plugh ; export plugh=cave
$ echo ${xyzzy} # normal, xyzzy to plugh
plugh
$ echo ${!xyzzy} # indirection, xyzzy to plugh to cave
cave
*
여기 에서처럼 주어진 "간접" 이로 끝나는 경우 예외가있는 것 같습니다. 이 경우 지정한 부분 ( N
여기)으로 시작하는 모든 변수 이름을 제공합니다 . Bash는 변수를 추적하고 어떤 것이 존재하는지 알고 있기 때문에 그렇게 할 수 있습니다.
진정한 간접는 이것이다 :
말 나는 변수가 $VARIABLE
로 설정을 42
하고, 나는 또 다른 변수가 $NAME
로 설정을 VARIABLE
. ${!NAME}
나에게 줄 것이다 42
. 한 변수의 값을 사용하여 다른 변수의 이름을 알려줍니다.
$ NAME="VARIABLE"
$ VARIABLE=42
$ echo ${!NAME}
42
예,! 다음에 가능한 모든 변수 확장을 검색합니다. 수행 한 경우 :
echo ${!NP*}
당신은 얻을 것 NPX_PLUGIN_PATH
입니다.
다음 예를 고려하십시오.
:~> export myVar="hi"
:~> echo ${!my*}
myVar
:~> export ${!my*}="bye"
:~> echo $myVar
bye
간접 처리에서 예외가 발생했습니다. 마지막 문자가 *
이면 이전에 주어진 접두사가있는 모든 변수가 반환됩니다.
권위있는 정보는 bash에 대한이 GNU 문서를 참조 할 수 있습니다.
그러나 기본적으로 간접 확장은 ${!prefix*}
예외 중 하나로 수행되지 않습니다 . 귀하의 예에서 N은 접두사입니다.
문서는 bash에서 간접 확장이 무엇인지 설명합니다.
참고 URL : https://stackoverflow.com/questions/8515411/what-is-indirect-expansion-what-does-var-mean
'IT TIP' 카테고리의 다른 글
TFS 명령 shelve / unshelve에 해당하는 Git은 무엇입니까? (0) | 2020.11.01 |
---|---|
여기서 @plt는 무엇을 의미합니까? (0) | 2020.11.01 |
Bash case 문에서 빈 문자열을 어떻게 테스트합니까? (0) | 2020.11.01 |
Android Studio에서 '출시'APK를 빌드하는 방법은 무엇입니까? (0) | 2020.11.01 |
ggplot geom_text 글꼴 크기 제어 (0) | 2020.11.01 |