Re: Bash to sh

From: Oliver Fromme <olli(at)secnetix.de>
Date: Fri, 11 Apr 2003 12:22:11 +0200 (CEST)

Jan Siml <jsi(at)jules.de> wrote:
> ich muß ein Script umschreiben, daß eigentlich für die Bash gedacht ist,
> nun aber unter sh laufen soll. Soweit geht das, aber mit einem komme ich
> nicht klar:
>
> SENDER=${2##*\@}
>
> In der Variable 2 (einer E-Mail-Adresse) soll alles bis zum @ entfernt
> werden, um den Domainnamen zu erhalten. Wie kann ich das nun sh-konform
> ausdrücken? Meine Unix-Referenz gibt dazu leider nichts her.

Das kommt drauf an, wie alt Deine Unix-Referenz ist. :-)
Die Expansion-Modifier #, ##, %, %% gibt es in der original
AT&T-sh nicht (daher kennt z.B. die /bin/sh auf Solaris sie
nicht). Allerdings unterstützt es jede halbwegs modernere
Bourne-Shell-Variante (ksh, zsh, bash, und auch die /bin/sh
von FreeBSD). Obige Zeile funktioniert mit allen genannten
Shells (wobei Du allerdings den »\« weglassen kannst). Für
FreeBSD mußt Du also nichts ändern.

Was für eine /bin/sh man unter Net-/OpenBSD hat, weiß ich
nicht. Falls sie dort dieses Feature noch nicht kennt,
dann ist es wohl am einfachsten, ein externes Kommando zu
verwenden (sed, expr oder cut), etwa so:

SENDER=`expr "x$2" : "x.*@\(.*\)"`

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
Die meisten Menschen pflegen im Kindesalter vom Zeigen auf Gegenstände
(Mausbewegung) und "ga" sagen (Mausklick) abzukommen, zugunsten eines
mächtigeren und langwierig zu erlernenden Tools (Sprache).
                              Achim Linder in de.comp.os.unix.linux.misc
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 11 Apr 2003 - 12:22:17 CEST

search this site