LINUX.ORG.RU

Запуск одного скрипта из другого без вывода ошибок

 , , ,


0

1

Допустим есть скрипт, который получает имя файла от пользователя (read fileName) и запускает fileName. Есть другой скрипт, который содержит в себе 6 строк кода, 2 из которых заведомо ошибочные. Скрипт должен отписать сначала работающие строки, а потом уже в самом конце ошибки которые выплюнул скрипт.

Как это реализовать? Я либо урод слепой, либо не могу найти в гугле решение именно моей проблемы (чтобы сначала скриптец сработал второй, а потом уже ошибки повылазили в консоль).

Ответ на: комментарий от nebularia

stderr это 2 вроде.

Не "вроде", а точно.

Не проверял, но идея такая.

Использую на боевых машинах, полёт нормальный.

Топикстартеру настоятельно рекомендую вначале всё отдебажить и убедиться что всё работает как должно, чтобы потом не гадать в каком месте скрипт обосрался и почему загадил всё вокруг.

mord0d ★★★ ()
Последнее исправление: mord0d (всего исправлений: 1)
Ответ на: комментарий от mord0d

Топикстартеру настоятельно рекомендую вначале всё отдебажить и убедиться что всё работает как должно, чтобы потом не гадать в каком месте скрипт обосрался и почему загадил всё вокруг.

В догонку рекомендую сразу делать set -euo pipefail сразу после шебанга.

AnDoR ★★★★★ ()
Ответ на: комментарий от AnDoR

set -e в сложных конструкциях противопоказан. Например в тех случаях, когда надо var=$(grep -E 'something'), он завершит скрипт, даже не смотря на то, что внизу будет проверка типа [ "x$var" = "x" ].

mord0d ★★★ ()
Ответ на: комментарий от AnDoR

Но топикстартер прибежит с вопросом «почему оно не работает, ведь работало же!» только потому что он не знает, что ему насоветовали. Если топикстартер пришёл с сабжевым вопросом (ничего плохого в этом нет, всего знать нельзя), то он и про set -e ничего не знает.

Ошибки должны быть обработаны, а не проигнорированы.

Для дебага — да, "в прод" пихать скрипт с set -e не стоит. ☺

mord0d ★★★ ()