LINUX.ORG.RU

История изменений

Исправление debugger, (текущая версия) :

Видимо для тех, кто из старой школы и чтобы не переучиваться.

При чём тут старая школа и «не переучиваться»? В первых версиях шелла команда test в соответствии с философией была внешней программой, шелл про неё ничего не знал. А в шелле знак > означает перенаправление вывода. поэтому test $# > 0 означает «перенаправить вывод команды test в файл с именем «0»». Отсюда и -gt, потому что каждый раз экранировать > неудобно, чревато ошибками, да и выглядит test $# \> 0 даже хуже чем test -gt 0. По этой же самой причине логические операции пишутся как -a и -o.

И только потом присобачили алиаc [ и сделали test встроенной командой (не знаю в каком порядке). Для обратной совместимости — чтобы не ломать уже написанные скрипты — синтаксис менять не стали, а не для того, что б «не переучиваться».

В отличие от test, [[ — изначально встроенная команда, парсится и исполняется шеллом, поэтому внутри двойных квадратных скобок && и || могут иметь (и имеют) другой смысл, чем снаружи. То же справедливо и для ((.

Исходная версия debugger, :

Видимо для тех, кто из старой школы и чтобы не переучиваться.

При чём тут старая школа? В первых версиях шелла команда test в соответствии с философией была внешней программой, шелл про неё ничего не знал. А в шелле знак > означает перенаправление вывода. поэтому test $# > 0 означает «перенаправить вывод команды test в файл с именем «0»». Отсюда и -gt, потому что каждый раз экранировать > неудобно, чревато ошибками, да и выглядит test $# \> 0 даже хуже чем test -gt 0. По этой же самой причине логические операции пишутся как -a и -o.

И только потом присобачили алиаc [ и сделали test встроенной командой (не знаю в каком порядке). Для обратной совместимости — чтобы не ломать уже написанные скрипты — синтаксис менять не стали, а не для того, что б «не переучиваться».

В отличие от test, [[ — встроенная команда, парсится и исполняется шеллом, поэтому внутри двойных квадратных скобок && и || могут иметь (и имеют) другой смысл, чем снаружи. То же справедливо и для ((.