korrekt ( funktioniert aber bei neueren Bashversionen nicht) und es matcht auch NICHT-Hex-Zahlenhikaru hat geschrieben:Auf dem openSuse 10.2 mit bash 3.1.17 vor dem ich hier sitze funktioniert es syntaktisch und matcht Hex-Zahlen.Danielx hat geschrieben:Hm, das funktioniert bei mir irgendwie nicht.
Code: Alles auswählen
if [[ "$var1" =~ "[0-9A-F]+" ]]
edit wenn man die Quotes escapt, würde es funktionieren ( dann sind sie Teil der Regex ), also so:
Code: Alles auswählen
if [[ \"$var1\" =~ \"[0-9A-F]+\" ]]; then
Im Prinzip hat pinguino doch noch die richtige ( Regex-) Lösung gefunden, zum Vergleich befinden sich in meinem ersten Beitrag hier in diesem Thread beide Lösungen, sowohl über Regex, als auch über Pattern Matching:
Ist ein bißchen mühsam hier, wenn keiner mehr liest, was die anderen schreibengms hat geschrieben:entweder mit Regexhikaru hat geschrieben:Du prüfst hier auf eine Regex, da brauchst du den Operator "=~".oder mit Pattern MatchingCode: Alles auswählen
gms1 ~ # cat y.sh #!/bin/bash isnumber() { if [[ "$1" =~ ^[0-9]+$ ]]; then echo "$1 is a number" else echo "$1 is NOT a number" fi } isnumber 123 isnumber off gms1 ~ # bash y.sh 123 is a number off is NOT a number
GrußCode: Alles auswählen
gms1 ~ # cat x.sh #!/bin/bash shopt -s extglob isnumber() { if [[ $1 == +([0-9]) ]]; then echo "$1 is a number" else echo "$1 is NOT a number" fi } isnumber 123 isnumber off gms1 ~ # bash x.sh 123 is a number off is NOT a number gms1 ~ #
gms
Gruß
gms