История изменений
Исправление 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
, [[
— встроенная команда, парсится и исполняется шеллом, поэтому внутри двойных квадратных скобок &&
и ||
могут иметь (и имеют) другой смысл, чем снаружи. То же справедливо и для ((
.