Проблема заключается в том, что имена файлов начинаются с дефиса. sort "$f1"
не работает, если значение f1
начинается с -
, потому что команда интерпретирует это значение как опцию. Обычно это приводит к ошибке, но может даже вызвать брешь в безопасности . В sort -- "$f1"
, аргумент с двойным тире --
означает «нет опций после этой точки» , поэтому значение f1
не будет интерпретироваться как опция. Но есть еще один пограничный случай :, если значением f1
является прочерк и ничего больше, то это не вариант, это аргумент -
, что означает «стандартный ввод» (, потому что аргумент — входной файл; для выходного файла это будет означать «стандартный вывод» ).
Использование перенаправления позволяет избежать всех этих ловушек.
Это относится к большинству команд, а не только к sort
.