В сценариях оболочки bash найдите слово в последних 10 строках файла. Если найдено, сделайте действие, а затем сделайте другое действие

В сценариях оболочки bash найдите слово в последних 10 строках файла. Если найдено, сделайте действие или сделайте другое действие

Я должен искать "Сервер запущен" в log.out, если найден, необходимо выполнить следующую команду

service httpd start

2 ответа

Вот как вы можете это сделать:

result=`tail --lines=10 log.out | grep "Server started"`
if [[ "$result" == ""]]; then
   ...
else
   ...
fi

Что вы можете сделать, это tail а также grep, затем проверьте код возврата из команды. Если это 0значит, grep что-то нашел, сделай свою логику:

  • задавать -q для grep, так что никакие совпадения не будут распечатаны
  • tail по умолчанию печатает последние 10 строк, можно добавить -n опция для номера строки тоже.
  • мы можем использовать &&

Соберите их вместе, у нас есть одна строка:

grep -q 'Server started' <(tail -n10 log.out) && service httpd start
Другие вопросы по тегам