[unix] `]`의 토큰 식별자는 무엇입니까?

배쉬 매뉴얼은 말한다 :

[형식을 사용하는 경우 명령의 마지막 인수는]이어야합니다.

$ type [
[ is a shell builtin
$ type ]
bash: type: ]: not found

따라서 ]예약어도 아니며 연산자도 아니며 내장 명령도 아닙니다.

토큰으로서 토큰 식별자는 ]무엇입니까? 단어 또는 이름?



답변

]보완 [, 그것은 [명령 의 마지막 신호입니다 .

는 AS man페이지는 지적이 사실에 대한 인수입니다 [, 그러나 [끝으로, 특히 그것을 치료하기 위해 발생합니다.

당신은 예를 들어, 다른 명령 폐쇄 패턴과 유사 할 수 있습니다 ;에서 find .. exec.


답변

Bash는 알파벳 문자와는 다른 문자 ( [또는 ]자체)를 취급하지 않습니다 .

이 경우 bash는 “word”를 [보고 해당 이름의 명령을 찾습니다. 파일 시스템을 살펴보면 /bin/[(또는 /usr/bin/[)이 실행 파일로 존재 한다는 것을 알게 될 것입니다 . bash는 또한 효율성을 위해 내장 버전을 제공하지만 구현 세부 사항입니다.

[(에서와 같이, 그 이름을 가진 실행) 명령은 당신이 그것에 통과 마지막 매개 변수가되어야한다는 규칙을 가지고 ]그렇지 않으면 오류가 발생합니다. 이것은 미적으로 기쁘기 때문에 일부일 수 있지만 실수로 잘린 명령으로부터 보호하는 역할도합니다.

이것들이 특별하지 않다는 사실 은 [or 전후에 공백을 생략 할 수없는 이유 ]입니다.


예외 :

  • []같은 단어 내에서 올바른 형식에서 발생하는, 예를 들면 [a-z], 그 다음은 입니다 특별하고 떠들썩한 파티의 글 로빙 규칙이 적용됩니다.
  • [[명령 특별하며 [불가능한 많은 작업을 수행 할 수 있습니다 (그리고 일부 매개 변수 [[ .. ]]는 줄 바꿈과 같이 다르게 처리됨). 대응은 ]]이 명령 이름이 될 수 없습니다 쉘 예약어이며, 다음 특수 처리 종료로도 특별한 [[키워드를.

답변

이전 두 답변보다 더 간단히 말하면 실행 해야하는 ]문자열입니다 [.


답변