In einem Teil des Skripts, an dem ich arbeite, möchte ich überprüfen, ob die eingegebene IP-Adresse im richtigen Format vorliegt. Ich möchte eine Schleife machen, während das Eingabeformat NICHT korrekt ist. Das Folgende funktioniert für eine Schleife, während das Format korrekt ist.
while [[ $range =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} ]]
do
Wie kann ich das umdrehen, um zu sagen, passt NICHT zum Format. Ich hatte gehofft, !=~
dass es funktionieren würde, aber ich erhalte einen Syntaxfehler.
Antworten:
Die Lösung ist so einfach, ich bin sicher, Sie werden es alle lustig finden.
Sie müssen sich nicht mit Details zur Negationssyntax auseinandersetzen,
until
sondern verwenden stattwhile
.quelle
Zum Vergleich von Strings sollte man
!=
anstelle von verwenden!=~
.Von
man bash
Da Sie rechts einen regulären Ausdruck verwenden, brauchen Sie in der Tat
=~
. Sie können den gesamten Ausdruck negieren.Beispiel:
quelle
bash
4.2.42. pastebin.com/0vHh5MMB