in shell script einen regulären ausdruck anwenden
Cruz
- programmiertechnik
0 Christian Seiler0 Cruz0 Christian Seiler0 Cruz
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
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
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
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
Ok supi, vielen Dank! Hast mir sehr geholfen.
Cruz