Bash에서 작업 순서가 올바른지 확인하세요.

Bash에서 작업 순서가 올바른지 확인하세요.

안녕하세요! 저는 Bash와 관련된 모든 것의 초보자입니다. 구문에 익숙해지고 있으며 이 명령의 작업 순서가 내가 생각하는 것과 같은지 알고 싶습니다.

명령: echo 2 * 3 > 5 is a valid inequalityCameron Newham의 Bash 쉘 학습

나는 순서가 다음과 같다고 생각한다.

  1. echo설명을 받다
  2. 2읽고 버퍼링됨
  3. *해석되고 검색이 초기화됩니다.
  4. 현재 폴더에서 일치하는 각 파일이 버퍼에 추가됩니다.
  5. 3읽고 버퍼링됨
  6. > 5해석되고 5새 파일이 생성되며 출력도 리디렉션됩니다.
  7. is읽고 버퍼링됨
  8. a읽고 버퍼링됨
  9. valid읽고 버퍼링됨
  10. inequality읽고 버퍼링됨
  11. echo버퍼의 내용을 다음으로 출력합니다.5

미리 감사드립니다

답변1

나는 bash 소스 코드를 읽지 않을 것이지만 당신이 상상하는 대로 일어날지는 의심스럽습니다. 왜냐하면 가장 정교한 인터프리터는 해석할 때 어떤 일도 하지 않고 전체 문장을 읽고 알아낸 다음 구현하기 때문입니다. 그들은 5와 같은 기호를 읽고 파일을 만든 다음 계속 읽고 "버퍼링"하지 않습니다.

(가끔) 알아야 할 것은 bash에서의 처리 순서입니다: 중괄호 확장, 인수 및 변수 확장, 산술 확장, 명령 대체;

귀하의 질문에 대한 답변은 다음과 같습니다. 토큰화는 첫 번째 단계가 아닌 마지막 단계 중 하나이기 때문에 텍스트를 읽는 동안 파일을 생성하기가 어렵습니다.

Bash의 세부 사항은 대부분의 사람들이 생각하는 것보다 더 복잡합니다. 그리고 그것은 좋은 것이 아닙니다. 구현하려면 완전한 재설계가 필요할 수 있는 난해한 잡동사니입니다. 그러나 그것이 바로 그 방법입니다.

관련 정보