Чтобы выполнить какую-либо -команду, пока она не выведет строку «успешно» на стандартный вывод, приостановив работу через пять минут после неудачного запуска:
until some-command | grep -q successful
do
sleep $((60 * 5)) ### or "sleep 5m", if supported by your version of sleep
done
Если вы ищете способ проверки адресов электронной почты, FWIW это то, что у меня есть в старом awk-скрипте, который лежит у меня дома и делает это:
# valid addrs regexp from http://www.regular-expressions.info/email.html
# Specifically do NOT want to use [:alpha:] to drop Asian characters etc
# Added a check that we have at least 2 consecutive alphabetic characters
# both before and after the "@" to get rid of x@y.co etc. garbage
(addr ~ /^[0-9a-zA-Z._%+-]+@[0-9a-zA-Z.-]+\.[a-zA-Z]{2,}$/) &&
(addr ~ /^.*[a-zA-Z]{2}.*@.*[a-zA-Z]{2}.*\.[a-zA-Z]{2,}$/)
Я уверен, что это можно было бы объединить в одно регулярное выражение, но мне все равно, что делать это, и конечный результат, вероятно, все равно будет менее ясным.