Anmelden

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...