Скрипт Bash.Скрытие вывода одной конкретной команды в сценарии, вывод которого в файл - PullRequest
0 голосов
/ 23 ноября 2011

Этот мой сценарий постепенно становится больше.Его вывод передается в файл при вызове (который позже используется для создания тела письма), однако у меня есть одна конкретная команда, которая вызывается в этом сценарии, вывод которой я хочу обрезать.

Я былпытаясь сделать

./somecommand | egrep "pattern1|pattern2"

, который прекрасно работает в обычном консольном окне, однако, когда я пробираюсь в мой больший скрипт, канал к egrep игнорируется и весь вывод "./somecommand" попадает в выводродительского сценария.

Как это исправить?

Я держу этот вопрос расплывчатым, чтобы избежать копирования всех этих чертовых вещей.Более подробная информация может быть предоставлена ​​по запросу.И да, сценарии внутри сценариев внутри сценариев, мы должны углубляться и т. Д. До сих пор у меня до пяти сценариев, которые выполняют различные задачи как часть более масштабной операции резервного копирования на нескольких серверах.Основной рабочий сценарий выводится в текстовый файл, вокруг которого построено тело письма, это служит журналом, который видит конечный пользователь.Один конкретный скрипт, который я вызываю из основного скрипта, довольно «шумный», поэтому egrep, чтобы получить только вывод, относящийся к пользователям.

Спасибо, ребята!

Ответы [ 3 ]

1 голос
/ 23 ноября 2011

Возможно ли ./somecommand отправляет свой вывод в stderr вместо stdout?Вы можете попробовать:

./somecommand 2>&1 | egrep "pattern1|pattern2"
0 голосов
/ 23 ноября 2011

Вы можете попробовать запустить скрипт в режиме отладки, например:

bash -x ./script
0 голосов
/ 23 ноября 2011

Вы пробовали опцию grep -v? Получаете ли вы однострочный вывод для всех сценариев, которые у вас есть в файле somecommand? Если это так, то вы можете использовать grep -v "pattern"

...