Подтвердить что ты не робот

Проверка того, что вывод команды содержит определенную строку в оболочке script

Я пишу оболочку script, и я пытаюсь проверить, содержит ли вывод команды определенную строку. Я думаю, что, вероятно, мне придется использовать grep, но я не уверен, как это сделать. Кто-нибудь знает?

4b9b3361

Ответ 1

Проверьте возвращаемое значение grep:

./somecommand | grep 'string' &> /dev/null
if [ $? == 0 ]; then
   echo "matched"
fi

идиоматически это делается так:

if ./somecommand | grep -q 'string'; then
   echo "matched"
fi

а также:

./somecommand | grep -q 'string' && echo 'matched'

Ответ 2

Тестирование $? это анти-шаблон

if ./somecommand | grep -q 'string'; then
  echo "matched"
fi

Ответ 3

Другой вариант - проверить соответствие регулярного выражения в выводе команды.

Например:

[[ "$(./somecommand)" =~ "sub string" ]] && echo "Output includes 'sub string'"