Moin,
hab 2 Strings
s1=eh[bx1].*
s2=xxehbnbf
1. wie formuliere ich da ein if ?
2. wie sieht ein find für
- echo sed
- echo grep
- s3=sed/grep
aus?
Probleme machen hauptsächlich < > |
Die RegEx krieg ich selber hin
[gelöst] es geht mit "expr match", d.h ohne sed/grep
Hermann
Das sind Umleitungoperatoren für den Bash Interpreter. Wenn Bash dies nicht sehen soll benutze Tütelchen:
'einfache Tütel: alles ist versteckt für die Bash'
"zweifache Tütel: Bash setzt Variablen ein, zB Text für: ${MeineVar}"
#!/bin/bash
if [ "<>" = "><" ] ; then
echo "dies wird nicht ausgegeben"
else
echo "nein - ungleich - dies sieht $USER"
echo 'User sieht nach Doppelpunkt "$USER": $USER'
fi
"Tütelchen" :D Besser bekannt unter "Anführungszeichen" in den Ausführungen 'einfach' und "doppelt" ;)
(doppelte Anführungszeichen werden auch gerne mal als Gänsefüßschen bezeichnet)
eine if für einen regulären Ausdruck sähe in etwa so aus:
AUSGABE="$(expr match 'tooolll' '[^o]*\(o\+\)[^o]*')"
if [ -n "$AUSGABE" ]; then
echo "Erf${AUSGABE}lg!!"
else
echo 'FAIL!'
fi
Wenn dir das Ergebnis des Ausdruckes nicht wichtig ist, kannst du die expr auch direkt ins if schreiben, allerdings würde ich dann die Standardausgabe auf /dev/null umleiten, damit dein Script keine Ausgaben generiert.
if expr match 'tooolll' '[^o]*\(o\+\)[^o]*' > /dev/null; then
P.S.: Viele denken, man müsste bei if immer [ irgendwas ] schreiben, das ist aber nicht zutreffen. Das [ ist keine Syntax sondern ein Programm - nämlich das Programm 'test' - siehe manpage.
//edit by me: Tipfehler im if-Beispile korrigiert: s/AUSGABE/AUFGABE/
Hi,
@Ralul - Tütelchen: mußte schon 2 mal hinschauen, was du meinst - und as mitten in der Nacht ...
@DonKult:
das muß allerdings so sein (mit !):
if [ ! -n "$AUFGABE" ]; then
@*:
man sieht wohl manchmal den Wald vor lauten Bäumen nicht ...
jedenfals das "expr match" hab ich wohl erfolgreich beim gooooooogeln übersehen.
grep/sed erübrigt sich hier dann wohl
Danke euch!
Quote from: khx@DonKult:
das muß allerdings so sein (mit !):
if [ ! -n "$AUFGABE" ]; then /quote]
Argh, Vertipper... Da steht natürlich "AUSGABE" und nicht "AUFGABE"... dann klappts auch mit -n was für 'nicht leer' steht während -z 'leer' bedeutet (und damit eqvivalent zu '! -n' ist).