내가 아는 [[
한의 향상된 버전 [
이지만 [[
키워드로 보았을 때 [
내장으로 표시 되면 혼란 스럽습니다 .
[root@server ~]# type [
[ is a shell builtin
[root@server ~]# type [[
[[ is a shell keyword
TLDP 는 말합니다
내장은 동일한 이름의 시스템 명령과 동의어 일 수 있지만 Bash는이를 내부적으로 다시 구현합니다. 예를 들어, Bash echo 명령은 동작이 거의 동일하지만 / bin / echo와 동일하지 않습니다.
과
키워드는 예약어, 토큰 또는 연산자입니다. 키워드는 쉘에 특별한 의미가 있으며 실제로 쉘 구문의 구성 요소입니다. 예를 들어, 동안, 그리고! 키워드입니다. 기본 제공과 유사하게 키워드는 Bash로 하드 코딩되지만 기본 제공과 달리 키워드 자체는 명령이 아니라 명령 구성의 하위 단위입니다. [2]
그것이 키워드 [
와 [[
키워드를 모두 만들어서는 안 됩니까? 내가 여기서 놓친 것이 있습니까? 또한, 이 링크 모두 것을 재 - 긍정 [
하고 [[
동일한 종류에 속하는 것이다.
if "[" $x -eq 3 ]
예상대로 작동하지만 (Bash는라는 명령을 찾음으로써 [
존재하지만) 작동 if "[[" $x -eq 3 ]]
하지 않습니다 (다시 한번 Bash가 적절한 이름의 명령을 검색하기 때문에 작동 하지 않습니다 ). [[
명령).
/usr/bin/echo
한다고해서 이것이 내장 된 것이 아님을 의미하지는 않습니다 .