LINUX.ORG.RU

Чтение вывода команды и выполнение действия(bash).

 ,


1

1

Помогите написать небольшой скрипт, который при наличии определенного текста в выводе одной команды, выполнял бы вторую. Например: Выполняется apt-get install gcc. И если в выводе встречается слово Error, то автоматически выполняется apt-get update(Вторая команда). Заранее спасибо.


Смотрите в сторону expect.

anonymous
()
first_command_generate_infinite_output | awk '/KeyWord/ {system("second_command")}'
sdio ★★★★★
()

Через код завершения не проще будет?

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

Если ничего не надо делать в случае отсутствия искомого слова, можно сделать короче:

#! /bin/bash

apt-get install gcc | grep Error

if let "$?!=1"
then
   apt-get update
fi
Policeman
()
Ответ на: комментарий от IPR

А если код возврата 1 при ошибке, то вообще apt-get install gcc || apt-get update

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

Если ТСу надо выполнять несколько команд при соблюдении какого-либо условия, || и && не подходят. Если же только одну — твой вариант, конечно компактнее. Я не знаю целей использования скрипта, поэтому написал универсальный вариант.

Policeman
()
Ответ на: комментарий от IPR

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

Policeman
()
if apt-get install gcc | grep -qFi error ; then
    # делаем что надо
    apt-get update
fi
KennyMinigun ★★★★★
()
Ответ на: комментарий от Policeman

Кто мешает делать так:

apt-get install gcc || { \
                           echo «Ololo» ; \
                           echo "100500" ; \
                           apt-get update ; }

Читаемость отличная.

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

да, аноним уже залинковал стандарт. был неправ.

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