Variable mittels regex überprüfen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Nano, 20.02.2008.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. #1 Nano, 20.02.2008
    Zuletzt bearbeitet: 20.02.2008
    Nano

    Nano Foren As

    Dabei seit:
    02.12.2006
    Beiträge:
    93
    Zustimmungen:
    0
    Hi folgendes Problem

    ich habe eine beliebige Variable $x die ich mittels regex überprüfen möchte, da die bashmuster nicht ausreichen, allerdings weiss ich nicht wie
    meine idee war z.b

    echo $x | grep "regex"

    Beispiel zum erkennen ob es sich um zahlen handelt

    Code:
    echo $x | grep "^[0-9]+$" 
    
    was leider keinen erfolg brachte



    -------------------------------------
    Lösung
    Code:
    bla=23
    blub='ein string'
    i="$bla"
    if [ $(echo $i | egrep '^[1-9][0-9]*$') ]; then echo "$i ist eine positive natürliche Zahl"; fi
    i="$blub"
    if [ $(echo $i | egrep '^[1-9][0-9]*$') ]; then echo "$i ist eine positive natürliche Zahl"; fi
    
    danke an Gott_in_Schwarz
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 bytepool, 20.02.2008
    Zuletzt bearbeitet: 20.02.2008
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    Satzzeichen sind deine Freunde ;)
    Ich war erstmal etwas irritiert, wieso weiss er nicht wie seine Idee war? ;p

    Alternativ ginge auch
    Code:
    if [[ $bla =~ '^[1-9][0-9]*$' ]]; then echo "zahl"; fi
    
    Die genaue Syntax fuer =~ ist aber, wie wir hier letztens schonmal feststellten, von der bash version abhaengig, und deswegen eventuell weniger portabel als mit egrep. Ist aber effizienter so, weil kein neuer Prozess gestartet werden muss.

    edit:
    Ich sehe gerade, dass ihr das in einem anderen Thread von dir schon bis zum erbrechen durchgekaut habt, wieso hast du denn jetzt dafuer nochmal einen neuen Thread aufgemacht?

    mfg,
    bytepool
     
  4. #3 Wolfgang, 20.02.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Wie ich im anderen Thread schon sagte, ist diese Variante unabhängig von der Bashversion:
    Scheint aber untergegangen zu sein.
    Code:
    a=123450;
    if [ -z ${a//[0-9]/} ];
    then
    echo "Das ist eine Zahl";
    else
    echo "Keine Dezimal-Zahl";
    fi
    
    Gruß Wolfgang

    closed wegen Doppelposting
     
Thema:

Variable mittels regex überprüfen

Die Seite wird geladen...

Variable mittels regex überprüfen - Ähnliche Themen

  1. Mittels AWK und einer Variablen suchen

    Mittels AWK und einer Variablen suchen: Hi Zusammen, ich versuche mit einem Bash-Script eine Datei nach bestimmten Werten auszulesen welche ich vorher per Variable übergebe - klappt...
  2. Linux 4.5 will UEFI-Variablen besser schützen

    Linux 4.5 will UEFI-Variablen besser schützen: Das Löschen bestimmter UEFI-Variablen kann manche Rechner nicht mehr startbar machen. Das kommende Linux 4.5 ergreift Maßnahmen dagegen, die im...
  3. Wie komme ich an den Inhalt des Inhalts einer Variable?

    Wie komme ich an den Inhalt des Inhalts einer Variable?: Hallo Zusammen, ich möchte meine Buildumgebung vereinfachen und besser zu automatisieren. Ein Skript schreibt Pfade in die env und diese...
  4. Textdatei zeilenweise in durchnummerierte Variablen schreiben

    Textdatei zeilenweise in durchnummerierte Variablen schreiben: Hi Leute, ich versuche folgendes Problem zu lösen. Ich möchte eine Textdatei einlesen und den Inhalt jeder Zeile in immer eine neue Variable...
  5. mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern

    mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern: Hallo zusammen, es geht um folgenden Teil meiner .sh-Datei: NumberCheck=`mysql $SQL_ARGS "SELECT lkw, Firma FROM adb_group WHERE...
Status des Themas:
Es sind keine weiteren Antworten möglich.