bash에서 확장 전 분사와 확장 중 분사의 차이점은 무엇입니까?

bash에서 확장 전 분사와 확장 중 분사의 차이점은 무엇입니까?

Bash설명서에는 Expansion is performed on the command line after it has been split into words.. 그런데 다음 문장에는 7번의 확장을 했다고 나와 있는데, 이번이 word splitting6번이다. 내가 이해하는 한, 이 둘은 서로 다른 분사입니다. 이 두 분사의 차이점은 무엇인가요?

답변1

오직하나분사, 그런 일이 일어났어요뒤쪽에중괄호 확장, 물결표 확장, 매개변수 및 변수 확장, 명령 대체, 산술 확장 등이 있지만앞으로경로명 확장.

(힌트:단어분할은 단어를 더 많은 단어로 분할합니다. 처음에 명령줄을 토큰으로 분할하는 것과 단어 분할을 혼동하고 있습니다. )

  1. |먼저 명령줄은 메타 문자 , &, ;, (, ), <, <space> 및 <tab>으로 >구분된 단어(또는 "태그") 로 구분됩니다.

  2. 명령줄을 나타내는 단어는 목록, 파이프 및 간단한 명령으로 구문 분석됩니다.

  3. 확장은 각각의 간단한 명령이 실행되는 것으로 간주될 때 발생합니다.

    • 중괄호 확장, 물결표 확장, 매개변수 및 변수 확장, 명령 대체 및 산술 확장 후에 쉘은 따옴표가 없는 확장 결과를 반복하여 단어로 분할합니다. 이번에는 $IFS() 안의 문자로 구분합니다.아니요명령줄을 구분하는 데 사용되는 메타문자).

    • 마지막으로 쉘은 따옴표가 없는 확장 결과 목록을 다시 반복하고 경로 이름 확장을 수행합니다.

POSIX 사양의 모든 세부 사항을 읽어보세요.쉘 명령 언어. (POSIX는 약간 더 간단한 셸을 설명합니다. Bash는 몇 가지 확장 기능을 구현하지만 그것이 어떻게 맞는지 쉽게 확인할 수 있습니다.)

질문에 대답하려면 다음과 같이 명령줄을 쉘 메타 문자로 구분된 토큰으로 초기 분할합니다. 단어 분할은 확장 결과를 $IFS.

관련 정보