Наскільки я знаю, [[це вдосконалена версія [, але я плутаюся, коли бачу [[це ключове слово і [показують як вбудований.
[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, але це не означає, що це не вбудований .