Вывод Bash script eval и grep подстрока вывода для записи условий

#arrays #linux #mongodb #bash #replicaset

#массивы #linux #mongodb #bash #набор реплик

Вопрос:

У меня есть команда в переменной cmds .

После выполнения этой команды в bash script $eval ${cmds[1]} он получает вывод:

 about to fork child process//
forked process: 1234
all output going to: /rand/direc/filename.log
child process started successfully, parent exiting.
 

Я хочу написать условие в bash, где я ищу «дочерний процесс успешно запущен» и выполняю определенные команды,

else echo -e "child process not started successfully"

Комментарии:

1. если grep -q «дочерний процесс успешно запущен» <<< ${cmds[1]};тогда ….

2. @RamanSailopal Я думаю, что ваш код проверяет, состоит ли вывод из «дочерний процесс успешно запущен», а затем выполняет команду $ {cmds[1]} . верно?

3. Разве это не то, что вам нужно?

4. @RamanSailopal Извините, если я не был ясен раньше. Прямо сейчас в моем скрипте, когда я пишу $eval $ {cmds[1]}, у меня есть вывод «…. дочерний процесс не запущен успешно …». И я хочу иметь возможность прочитать, есть ли в выводе эта подстрока «дочерний процесс не запущен успешно». Если да, то повторите «хорошо идти», иначе «не начато».

5. @RamanSailopal любая помощь?

Ответ №1:

Запишите выполнение команды для строки, передаваемой по каналу в tee /dev/tty, чтобы отобразить вывод команды на экран

 if eval ${cmds[1]} | tee /dev/tty | grep -q "child process not started successfully"
then 
     echo "OK"
fi