Проверьте вхождение строки с переменным номером - PullRequest
0 голосов
/ 24 апреля 2019

Проверить вхождение строки с переменным номером Я должен проверить определенное условие, и это условие заключается в том, что всякий раз, когда где-то в определенном URL-адресе есть строка, в которой говорится «[X] неправильный», затем возвращается «TestNotSuccesfull». Здесь X может быть «1», «2» и т. Д.

Я не знаю, как сделать утверждение, которое может это проверить, иначе проверить «1 неправильно» ИЛИ «2 неправильно» или «3 неправильно» и т. Д. Должно быть лучшее решение. Кроме того, поскольку теоретически X в «X неправильно» может привести к нескольким тысячам ...

Под командной строкой, которую я создал в bash, проверяется, встречается ли '1 неправильно'.

export result=`curl http://websiteABC.com | grep '1 wrong' | wc -l`; if [ $result -ge 1 ]; then  echo "TestNotSuccesfull"; else echo "TestSuccesfull"; fi 

Кто-нибудь может мне помочь?

PS, строка, которая должна быть проверена, фактически является частью '(...) правильно, X неправильно, (...)'.

1 Ответ

2 голосов
/ 24 апреля 2019

Регулярные выражения - ваш друг.

if curl http://websiteABC.com | grep -qE '[0-9]*[1-9][0-9]* wrong'
then  echo "TestNotSuccesfull"
else echo "TestSuccesfull"
fi 

if может принимать сложную команду в качестве аргумента, и любой ненулевой возврат оценивается как ложный.

grep может принимать расширенные регулярные выражения, если вы используете -E, а -q говорит, что не следует отправлять совпадающие строки в стандартный вывод, а просто возвращает n код выхода, чтобы указать, были ли они найдены.[0-9]+ означает одну или несколько цифр.

Я отредактировал шаблон.Этот не будет ложно сообщать об ошибке на 0 wrong, но будет попадать на 01 wrong или 10 wrong и т. Д.

Опять же, см. Ссылку в начале моего ответа, но - [...]«класс символов», что означает, что он соответствует ОДНОМУ символу, как любой из тех, что заключены в квадратные скобки.Он может быть разработан с дополнительными метасимволами:

* означает «ноль или более» предыдущего шаблона, поэтому [0-9]* будет соответствовать любому количеству последовательных цифр.Это означает, что он будет совпадать с 123454321, или пустой строкой ... поэтому при проверке на "ab" он будет совпадать в начале, в конце и между буквами.

[0-9]*[1-9][0-9]* означает "любой"или без цифр "([0-9]*), за которыми следует любая ненулевая цифра ([1-9]), за которой следует" любая цифра или нет "([0-9]*).Это позволяет начинать нули, заканчивая нулями, но не ТОЛЬКО нулями.Если нет хотя бы одной ненулевой цифры, происходит сбой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...