Na parte do script em que estou trabalhando, quero validar se o endereço IP inserido está no formato correto. Eu quero fazer um loop enquanto o formato de entrada NÃO está correto. O seguinte funciona para um loop enquanto o formato está correto.
while [[ $range =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} ]]
do
Como posso mudar isso para dizer NÃO se encaixa no formato. Eu esperava !=~
que funcionasse, mas estou recebendo um erro de sintaxe.
Respostas:
A solução é tão simples que tenho certeza de que todos acharão engraçado.
Não há necessidade de se preocupar com os detalhes da sintaxe de negação, basta usar em
until
vez dewhile
.fonte
Para comparação de string, deve-se usar em
!=
vez de!=~
.A partir de
man bash
Como você está usando uma expressão regular à direita, você realmente precisa
=~
. Você pode optar por negar toda a expressão.Exemplo:
fonte
bash
4.2.42. pastebin.com/0vHh5MMB