Вы можете сделать что-то вроде:
$ if grep "string" file;then echo "found";else echo "not found"
чтобы сделать петлю:
$ while ! grep "no" file;do echo "not found";sleep 2;done
$ echo "found"
Но будьте осторожны, чтобы не вводить бесконечный цикл. строка или файл должны быть изменены, иначе цикл не имеет значения.
Выше if/while работает на основе состояния возврата команды, а не результата. Если grep находит строку в файле, возвращается 0 = success = true , если grep не находит строку, возвращается 1 = not success = false
Использование! мы возвращаем «false» в «true», чтобы поддерживать цикл с тех пор, пока циклы на чем-то, как только это правда.
Более обычный в то время как цикл будет похож на код, но без бесполезного использования кошки и дополнительной трубы:
$ while [ -z $(grep "no" a.txt) ];do echo "not found";sleep 2;done
$ echo "found"
... Так что ваш вопрос –