LINUX.ORG.RU

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

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

В обычном sh не сохраняются переносы строк, надо $data взять в кавычки.

В ГНУ Баше тоже; а подстановки и zsh раскроются, емнип.

Но это одна ошибка.

Я посчитал за две — она же дважды повторена.

Где ещё две?

Еще одна, что я имел в виду — это зачем-то (echo "Необходима магия" 1>&2 && exit 1) выполняется в подоболочке, что и само по себе расточительно, но в данном случае еще и exit выйдет именно из нее, а не из всей программы.

В дословно приведенном примере этого правда тестом не отловить, вызов подоболочки — последнее выражение, а значит программа таки завершится и вернет единицу.

Ну и если очень хочется еще одну странность, то можно отметить, что аварийное завершение зависит от успешного вывода ошибка. Если вывод в файл провалится, но сообщить об этом программа не сможет, то она завершится успешно. Согласитесь, странно? Я правда, навскидку не приведу разумного примера, когда вывод в поток ошибок вернет ошибку, и поэтому это в числе трех не считал.

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

В обычном sh не сохраняются переносы строк, надо $data взять в кавычки.

В ГНУ Баше тоже; а подстановки и zsh раскроются, емнип.

Но это одна ошибка.

Я посчитал за две — она же дважды повторена.

Где ещё две?

Еще одна, что я имел в виду — это зачем-то (echo "Необходима магия" 1>&2 && exit 1) выполняется в подоболочке, что и само по себе расточительно, но в данном случае еще и exit выйдет именно из нее, а не из всей программы.

В дословно приведенном примере этого правда тестом не отловить, вызов подоболочки — последнее выражение, а значит программа таки завершится и вернет единицу.

Ну и если очень хочется еще одну странность, то можно отметить, что аварийное завершение зависит от успешного вывода ошибка. Если вывод в файл провалится, но сообщить об этом программа не сможет, то завершится успешно. Согласитесь, странно? Я правда, навскидку не приведу разумного примера, когда вывод в поток ошибок вернет ошибку, поэтому и не считал.