В части сценария, над которым я работаю, я хочу проверить, что введенный IP-адрес имеет правильный формат. Я хочу сделать цикл, пока формат ввода НЕ правильный. Следующее работает для цикла, пока формат правильный.
while [[ $range =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} ]]
do
Как я могу перевернуть это, чтобы сказать, не соответствует формату. Я надеялся, !=~
что это сработает, но я получаю синтаксическую ошибку.
Ответы:
Решение очень простое, я уверен, что вам все покажется смешным.
Не нужно беспокоиться о деталях синтаксиса отрицания, просто используйте
until
вместоwhile
.источник
Для сравнения строки следует использовать
!=
вместо!=~
.От
man bash
Поскольку вы используете регулярное выражение справа, вам действительно нужно
=~
. Вы можете отрицать все выражение.Пример:
источник
bash
4.2.42. pastebin.com/0vHh5MMB