Archiv verlassen und diese Seite im Standarddesign anzeigen : if-Bedingung, ob bestimmter Text am Ende in einer Variable steht...
d@tenmaulwurf
20-02-2005, 00:50
Moin!
Ich würde gerne überprüfen, ob eine bestimmte Zeichenfolge am Ende einer Variable steht oder nicht.
Ich habe mir sowas gedacht:
IF [ am Ende der Variable $xyz 'blub' steht ]; then...
Damit soll true ausgespcukt werden, wenn $xyz z.B. = blablablablub ist.
Vielen Dank im voraus,
d@tenmaulwurf
peschmae
20-02-2005, 08:43
Den "am Ende der Variable $xyz 'blub' steht" Teil realisierst du denke ich am einfachsten mit Grep. Grep kann naämlich auch regexps.
peschmae@thinkpad:~$ BLA=asöldkfjasdfasdfjjkork
peschmae@thinkpad:~$ echo $BLA | grep -e ".*kork$"
asöldkfjasdfasdfjjkork
peschmae@thinkpad:~$ BLA=asöldkfjasdfasdfjjkorks
peschmae@thinkpad:~$ echo $BLA | grep -e ".*kork$"
peschmae@thinkpad:~$
damit Grep schweigst machst du anstatdessen ein "grep -q -e blabla". Das ganze:
if echo $VAR | grep -q -e ".*kork$"; then
echo $VAR passt
fi
MfG Peschmä
michael.sprick
20-02-2005, 08:54
Das geht mit grep. Ein '$'-Zeichen markiert das Stringende...
#!/bin/sh
STRING="Hallo Welt"
PATTERN="Welt"
if [ "`echo "${STRING}" | grep -e "${PATTERN}\$"`" ];then
echo "${PATTERN} steht am Ende von \" ${STRING} \" "
fi
...zu langsam :(
peschmae
20-02-2005, 09:22
Hmm, Cut war bisher für mich immer ein minderwertiges eher unflexibles Sed. Vielleicht ist dem doch nicht so :D
MfG Peschmä
michael.sprick
20-02-2005, 09:47
ähm... richtige Antwort im falschen Posting? ;)
Aber ich stimme Dir eigentlich zu... cut kann nicht besonders viel und ist auch ziemlich unflexibel. sed ist sicherlich, auch aufgrund der besseren Weiterverarbeitung des Teilstrings, die angebrachtere Lösung.
michael :)
peschmae
20-02-2005, 11:06
Du hast vollkommen recht. Immer diese Tabbed-Browser mit dem Chaos im Kopf :rolleyes:
MfG Peschmä
d@tenmaulwurf
20-02-2005, 17:25
Vielen Dank - funzt perfekt...
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.