"단어 확장"이라는 용어를 접했습니다.여기:
다른 모든 단어 확장(
$non_exported_shell_variable
,$1
,$#
,${HOME+x}
,$((1 + 1))
,$(cmd)...)
변경하지 않음 )
확장변수가 뭔지는 알겠 ${HOME}
는데 "단어확장"이 뭐죠?
아마도 "단어 분할"에 대한 대체 용어일 수 있습니다("필드 분할"에 대한 대체 용어 자체).
고쳐 쓰다
연결된 답변의 수명과 첫 번째 읽기의 인지적 편견(주로 또는 단순히 여기에 언급된 많은 개념에 대한 이해 부족으로 인해)으로 인해 다음과 같은 메모를 내부화하지 않았습니다.
단어 확장이러한 맥락에서는 다음을 가리킨다.매개변수 확장,산술 확장그리고명령 대체. 여기에는 포함되지 않습니다.파일 이름 생성(일명와일드카드또는경로명 확장),물결표 확장...도 아니다버팀대 확장(표준
sh
기능 자체는 아닙니다). 여기에서 문서를 사용하면'
및"
가 변경되지 않은 상태로 유지되지만 여전히 백슬래시 처리가 있다는 점에 유의하세요.
답변1
"단어 확장"(복수형 참고)은 다음에 자세히 정의되어 있습니다.POSIX;그들은
- 물결표 확장(
~
) - 매개변수 확장(
${}
) - 명령 대체(
$()
) - 산술 확장(
$(())
) - 경로명 확장
"단어 확장"은 위의 모든 기능을 특정 순서에 따라 다른 여러 쉘 구문 분석 기능과 결합하여 적용한 것입니다.
- 물결표 확장, 매개변수 확장, 명령 대체, 산술 확장
- 필드 분할
- 경로명 확장
- 견적 삭제
이에 대한 자세한 내용은 위에 링크된 POSIX 사양을 참조하세요.