Cruz: in shell script einen regulären ausdruck anwenden

Hallo,

ich möchte in einem kleinen shel Script für Bash einen regulären Ausdruck anwenden, der diese Operation bewerkstelligen soll:

unless [ uname =~ /^CYGWIN/ ] $FLAG = "-pthread"

ich suche schon seit einer Stunde nach einem Beispiel, wo ich abgucken kann, finde aber nichts Passendes. Kann mir jemand bitte die richtige Syntax verraten, damit ich heute Abend noch was unternehmen kann? ;)

danke,
Cruz

  1. Hallo Cruz,

    unless [ uname =~ /^CYGWIN/ ] $FLAG = "-pthread"

    Das stimmt schon fast, =~ gilt aber nur in [[, ]] (außerdem willst Du vmtl. die Variable FLAG setzen, nicht die Variable, deren Name in $FLAG steht):

    unless [[ uname =~ /^CYGWIN/ ]] FLAG="-pthread"

    Viele Grüße,
    Christian

    1. Hallo Christian,

      klappt leider nicht ganz. unless scheint es nicht zu geben, daher habe ich das erstmal in ein if umgewandelt. Dieses Script:

      #!/bin/bash

      if [[ uname =~ /^CYGWIN/ ]]
      then
       FLAG="-pthread"
      fi

      echo uname
      echo $FLAG

      gibt leider nur

      CYGWIN_NT-5.1

      aus.

      Gruß,
      Cruz

      1. Hallo Cruz,

        klappt leider nicht ganz. unless scheint es nicht zu geben, daher habe ich das erstmal in ein if umgewandelt.

        *ARGH*... *ARGH*... Wenn ich nächstes Mal Lösungen poste, verspreche ich, die richtige Variante zu posten (hatte noch eine alte Version). Um mal Deine Variante zu modifizieren:

        #!/bin/bash  
          
        if [[ ! `uname` =~ ^CYGWIN ]] ; then  
          FLAG="-pthread"  
        fi  
          
        echo `uname`  
        echo $FLAG
        

        Zwei Dinge:

        1. In Perl ist unless das Gegenteil von if, daher musst Du Deine Bedingung noch negieren.

        2. In Perl werden reguläre Ausdrücke zwar in Delimiter geschrieben, sonst aber eigentlich nirgends (gut, JavaScript und PHP preg_* vielleicht noch).

        Viele Grüße,
        Christian

        1. Ok supi, vielen Dank! Hast mir sehr geholfen.

          Cruz