#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