배쉬 매뉴얼은 말한다 :
[형식을 사용하는 경우 명령의 마지막 인수는]이어야합니다.
$ type [
[ is a shell builtin
$ type ]
bash: type: ]: not found따라서 ]예약어도 아니며 연산자도 아니며 내장 명령도 아닙니다.
토큰으로서 토큰 식별자는 ]무엇입니까? 단어 또는 이름?
답변
]보완 [, 그것은 [명령 의 마지막 신호입니다 .
는 AS man페이지는 지적이 사실에 대한 인수입니다 [, 그러나 [끝으로, 특히 그것을 치료하기 위해 발생합니다.
당신은 예를 들어, 다른 명령 폐쇄 패턴과 유사 할 수 있습니다 ;에서 find .. exec.
답변
Bash는 알파벳 문자와는 다른 문자 ( [또는 ]자체)를 취급하지 않습니다 .
이 경우 bash는 “word”를 [보고 해당 이름의 명령을 찾습니다. 파일 시스템을 살펴보면 /bin/[(또는 /usr/bin/[)이 실행 파일로 존재 한다는 것을 알게 될 것입니다 . bash는 또한 효율성을 위해 내장 버전을 제공하지만 구현 세부 사항입니다.
[(에서와 같이, 그 이름을 가진 실행) 명령은 당신이 그것에 통과 마지막 매개 변수가되어야한다는 규칙을 가지고 ]그렇지 않으면 오류가 발생합니다. 이것은 미적으로 기쁘기 때문에 일부일 수 있지만 실수로 잘린 명령으로부터 보호하는 역할도합니다.
이것들이 특별하지 않다는 사실 은 [or 전후에 공백을 생략 할 수없는 이유 ]입니다.
예외 :
- 때 [와]같은 단어 내에서 올바른 형식에서 발생하는, 예를 들면[a-z], 그 다음은 입니다 특별하고 떠들썩한 파티의 글 로빙 규칙이 적용됩니다.
- 이 [[명령 은 특별하며[불가능한 많은 작업을 수행 할 수 있습니다 (그리고 일부 매개 변수[[ .. ]]는 줄 바꿈과 같이 다르게 처리됨). 대응은]]이 명령 이름이 될 수 없습니다 쉘 예약어이며, 다음 특수 처리 종료로도 특별한[[키워드를.
답변
이전 두 답변보다 더 간단히 말하면 실행 해야하는 ]문자열입니다 [.
