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