LINUX.ORG.RU
ФорумAdmin

Поиск текста в stdout

 , ,


1

2

Пишу скрипт. Необходимо, чтобы при появлении в терминале определенного текста, он выводил, к примеру, какое-то сообщение

echo $output if [[ $output =~ «ERROR» ]]; then echo «бла бла»

Почему это не работает? if игнорируется

в однострочниках используй /usr/bin/test, вместо if и булевые && ||.

типа того

echo -e "вася\nлеша" > out; output=$(grep "леша" out); test ${output} = "леша" && echo "Найдено" || echo "Не найдено" 
garik_keghen ★★★★★ ()
Последнее исправление: garik_keghen (всего исправлений: 1)
Ответ на: комментарий от Valerian15

Не в курсе, как работать с mysql, но чтобы просто в выхлопе поймать ошибку

command 2>&1 | grep 'ошибка'
Yorween ()

У кадой софтинки есть статус выполнения. 0 - работает, 1 и выше - ошибка.

[[ $? -eq 0 ]] && echo "true" || echo "false"

Deleted ()
Ответ на: комментарий от garik_keghen

Ну все-таки вариант с [[ =~ ]] попроще.
A=$(echo -e "вася\nлеша"); [[ "$A" =~ "леша" ]] && echo "Найдено" || echo "Не найдено"

anc ★★★★★ ()
Ответ на: комментарий от Bers666

А с каких пор в PHP постфиксный if появился, и разделение операторов без ;? Ты его явно с чем-то путаешь.

Moondancer ()
Ответ на: комментарий от anc

[code]A=$(echo -e «вася\nлеша»); [[ «$A» =~ «леша» ]] && echo «Найдено» || echo «Не найдено»[/code]

Занудства ради. У ТСа уже готовый $output, так что для демки правильней без всяких там echo и кавычки для "$A" тоже не надо.

A=$'вася\nлеша'; [[ $A =~ "леша" ]] && echo "Найдено" || echo "Не найдено"

vodz ★★★★★ ()
Ответ на: комментарий от Bers666

Готовый оутпут он явно получил из другой команды.

Слово «явно» подразумевает, что это можно показать. Процитируйте это «явно». С таким же успехом там может скрипт формировать эту output строчными выражениями, не вызывая внешние программы.

Почему бы не использовать трубу на греп.

Зачем ещё одну команду вызывать?

vodz ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.