Я пишу скрипт для автоматического запуска приложения всякий раз, когда мы обнаруживаем ошибку в журналах.

так

#/bin/bash

if [ grep -c 'error' logs -eq 0 ] ;then
  exit
else

start <<EOF ## start is  a script which starts the application

7 
c

проблема в том, что после запуска "start" мне нужно ввести 7 и всякий раз, когда скрипт останавливается со статусом «c-continue s-stop» .. мне нужно непрерывно нажимать c, пока "start" не получит статус, успешно запущенный. Как я могу это сделать?

как вставить цикл внутри EOF или как-то иначе?

2 ответа2

2

Как насчет:

{ echo 7; yes c; } | start

Использует группирующую конструкцию, которая позволяет выводить 2 команды в ваш скрипт.

1

Мое улучшение ответа @ glennjackman:

#!/bin/bash

grep -q 'error' logs   &&   { echo 7; yes c; } | start

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .