Описание тега museums
Резюме
Под Баш
, если эта команда в скрипте, скрипт файл будет перезаписан с сообщением об ошибке.
Пример
Рассмотрим следующий сценарий:
$ кот test.sh
дата 2&>$0
Теперь выполните скрипт:
$ Баш test.sh
test.sh: линия 2: неожиданный конец файла при поиске соответствия `'
test.sh: строка 3: ошибка синтаксиса: неожиданный конец файла
Соблюдать новое содержание скрипта:
$ кот test.sh
дата: недействительные даты `2'
Объяснение
Команда, дата 2&>$0
, интерпретируется следующим образом:
На
сегодняшний день
команда выполняется с аргументом2
Все выходные, как stdout, так и stderr, с даты команды перенаправляется в файл
$0
.$0
- это имя текущего скрипта.Символ
>
означает перенаправление, по умолчанию, стандартный вывод. Какв bash
расширения, символ&>
ярлык указанием перенаправление оба stdout и stderr. Следовательно, оба stdout и stderr будут перенаправлены в файл$0
.После того как скрипт файл перезаписывается, то это уже не допустимый сценарий и
Баш
будет жаловаться на неверные команды.
Разница между Баш
и POSIX оболочек
С простой оболочка POSIX, такие как черточки
, ярлык &>
не поддерживается. Следовательно, команды дата 2&>$0
будет перенаправлять только стандартный вывод в файл $0
. В данном случае, это означает, что скрипт файл перезаписывается с пустым файлом, а дата
появится сообщение об ошибке на терминал.