Что я пытаюсь сделать: создать скрипт bash, который выполняет некоторые тесты в моей системе, который затем читает некоторые файлы журналов, и в конце указывает мне на некоторые анализы.
У меня есть, например, файл журнала (и, хотя иногда он не такой большой, я хочу сохранить процесс, когда это возможно), который в конце концов выглядит примерно так:
Ran 6 tests with 1 failures and 0 errors in 1.042 seconds.
Tearing down left over layers:
Tear down Products.PloneTestCase.layer.PloneSite in 0.463 seconds.
Tear down Products.PloneTestCase.layer.ZCML in 0.008 seconds.
И у меня уже есть эта строка bash, которая занимает нужную мне строку (строку с ошибками и ошибками):
error_line=$(tac $p.log | grep -m 1 '[1-9] .* \(failures\|errors\)')
Obs: Может кто-нибудь ответить мне, если 'tac' передает процесс grep для каждой строки файла, или сначала он загружает файл отверстия в память, а затем grep запускает отверстие "переменная памяти"? Потому что я думал о запуске grep для каждой строки, и когда приходит нужная мне строка, я прекращаю процесс "обработки".
Если он работает таким образом («подбрасывает» каждую строку), когда grep находит то, что хочет (с опцией -m 1), он останавливает процесс tac? Как я это сделаю?
Кроме того, вы знаете лучший способ?
Продолжение ...
Итак, результат команды:
Ran 6 tests with 1 failures and 0 errors in 1.042 seconds.
Теперь я хочу проверить, что оба значения '1' и '0' в переменной $ error_line равны 0 (как будто их нет в этом случае), поэтому, если любое из них отличается, я может выполнить какой-то другой процесс, чтобы определить, какая-то ошибка или сбой были найдены.
Ответы