Я пишу оболочку script, и я пытаюсь проверить, содержит ли вывод команды определенную строку. Я думаю, что, вероятно, мне придется использовать grep, но я не уверен, как это сделать. Кто-нибудь знает?
Проверка того, что вывод команды содержит определенную строку в оболочке script
Ответ 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'"