Как проверить, если поток пуст?

Например, я хочу выполнить:

ps x | grep something | grep -v grep | somecommand

Я хочу выполнить somecommand, только если что-то запущено. Как это сделать?

1
задан 17 September 2012 в 14:04

3 ответа

Вы можете использовать if. Кроме того, для grep для команды, но для исключения самой grep, вы можете использовать следующий прием:

if ps x | grep '[s]omething' ; then
    echo Running.
else
    echo Not running.
fi
0
ответ дан 17 September 2012 в 14:04

Это просто:

pgrep something && somecommand

pgrep похоже на ps | grep something | grep -v grep, более кратко, но с меньшим количеством опций для управления выходом. Однако вам не нужно беспокоиться, что вы случайно отфильтруете что-то, что действительно необходимо (например, pgrep agreppina будет работать, но ps x | grep agreppina | grep -v grep не будет).

command1 && command2 чем-то напоминает любое соединение в языке программирования, команда2 будет выполняться только в том случае, если первая команда была успешной (фактически, если она вернула нулевой статус).

0
ответ дан 17 September 2012 в 14:04

Вот решение

ps x | grep something | [[-n $(grep -v grep) ]] && somecommand

  • -n проверит, является ли строка нулевой или нет
  • и - оператор и
0
ответ дан 17 September 2012 в 14:04

Другие вопросы по тегам:

Похожие вопросы: