Upper Case & Lower Case

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
LeoLinux
Beiträge: 408
Registriert: 24.11.2005 17:58:47
Wohnort: Frankfurt Am Main

Upper Case & Lower Case

Beitrag von LeoLinux » 06.09.2010 10:08:13

Hi,

ich habe eigentlich ein recht simples Problem. Mit Hilfe eines Bash Scripts möchte ich in einer "if - Bedingung" eMail Adressen vergleichen.
Hierbei kann es jedoch sein, dass die Benutzer Groß- und Kleinschriebung vermischen und somit meine Bedingung aushebeln würden, weil diese nicht mehr vergleichbare Werte erhält. Ich müsste es also irgendiwe schaffen mit meinen Freunden AWK, oder SED die Variable $SENDER in Kleinbuchstaben umzuwandeln. Dann könnte ich diesen umgewandelten Wert mit dem der Datenbank vergleichen lassen.
Hat jemand ne Idee wie man sich das am besten hinschmieden könnte?

Vielen Dank im Vorraus & Grüße

LeoLinux

michaels
Beiträge: 1164
Registriert: 29.03.2009 18:12:25

Re: Upper Case & Lower Case

Beitrag von michaels » 06.09.2010 10:12:40

Ich mache das immer mit "tr":

Code: Alles auswählen

echo irgendEtwas | tr "[:upper:]" "[:lower:]"
Gruß

Benutzeravatar
LeoLinux
Beiträge: 408
Registriert: 24.11.2005 17:58:47
Wohnort: Frankfurt Am Main

Re: Upper Case & Lower Case

Beitrag von LeoLinux » 06.09.2010 10:21:40

Fette Sache - Danke! ;)

yeti

Re: Upper Case & Lower Case

Beitrag von yeti » 06.09.2010 14:13:44

Eine hinreichend neue eilerlegende Wollmilchshell... ääääähhh... Debianbash (ab welcher Version genau weiß ich aber nicht, die in Squeeze kann) kann das auch ohne "tr".
Schau mal in der Manpage nach ${VAR1^^} und ${VAR,,}.

michaels
Beiträge: 1164
Registriert: 29.03.2009 18:12:25

Re: Upper Case & Lower Case

Beitrag von michaels » 06.09.2010 14:25:13

yeti hat geschrieben:Eine hinreichend neue eilerlegende Wollmilchshell... ääääähhh... Debianbash (ab welcher Version genau weiß ich aber nicht, die in Squeeze kann) kann das auch ohne "tr".
Schau mal in der Manpage nach ${VAR1^^} und ${VAR,,}.
Interessant. Aber ist das dann nicht zsh? Sollte das nicht die Standard Shell unter Squeeze werden!?

Benutzeravatar
bmario
Beiträge: 1257
Registriert: 05.09.2007 12:15:47
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dresden

Re: Upper Case & Lower Case

Beitrag von bmario » 06.09.2010 14:27:48

michaels hat geschrieben:
yeti hat geschrieben:Eine hinreichend neue eilerlegende Wollmilchshell... ääääähhh... Debianbash (ab welcher Version genau weiß ich aber nicht, die in Squeeze kann) kann das auch ohne "tr".
Schau mal in der Manpage nach ${VAR1^^} und ${VAR,,}.
Interessant. Aber ist das dann nicht zsh? Sollte das nicht die Standard Shell unter Squeeze werden!?
Nein und nein.

Dash ist die Shell, die nach /bin/sh gelinkt ist, wohingegen der User standardmäßig vor einer Bash sitzt.
Nichts zu tun ist viel besser,
als mit viel Mühe nichts zu schaffen. - Laotse

michaels
Beiträge: 1164
Registriert: 29.03.2009 18:12:25

Re: Upper Case & Lower Case

Beitrag von michaels » 06.09.2010 14:34:08

bmario hat geschrieben:
michaels hat geschrieben:
yeti hat geschrieben:Eine hinreichend neue eilerlegende Wollmilchshell... ääääähhh... Debianbash (ab welcher Version genau weiß ich aber nicht, die in Squeeze kann) kann das auch ohne "tr".
Schau mal in der Manpage nach ${VAR1^^} und ${VAR,,}.
Interessant. Aber ist das dann nicht zsh? Sollte das nicht die Standard Shell unter Squeeze werden!?
Nein und nein.

Dash ist die Shell, die nach /bin/sh gelinkt ist, wohingegen der User standardmäßig vor einer Bash sitzt.
Da würde ich aber gern noch eine weitere Meinung hören...denn die Bash (Bourne Again SHell) ist auch nur eine Shell...

yeti

Re: Upper Case & Lower Case

Beitrag von yeti » 06.09.2010 14:52:15

michaels hat geschrieben:Da würde ich aber gern noch eine weitere Meinung hören...denn die Bash (Bourne Again SHell) ist auch nur eine Shell...
Die BASH ist ein Superset der Defakto-Standardshell SH.
Wenn man sich ordentlich in der BASH ausgetobt hat, dann hat man gute Chancen darauf daß das resultierende Skript nicht in der SH läuft.
Da aber manche Systeme noch den Symlink SH auf BASH zeigen lassen, fallen die Bashismen manchmal nicht auf, selbst wenn man sein Skript mit "#!/bin/sh" beginnt...
Schon etwas gefährlich, wenn man nicht nur für das eine eigene System skriptet...

Benutzeravatar
LeoLinux
Beiträge: 408
Registriert: 24.11.2005 17:58:47
Wohnort: Frankfurt Am Main

Re: Upper Case & Lower Case

Beitrag von LeoLinux » 06.09.2010 15:27:28

Wenn man sich ordentlich in der BASH ausgetobt hat, dann hat man gute Chancen darauf daß das resultierende Skript nicht in der SH läuft.
Da aber manche Systeme noch den Symlink SH auf BASH zeigen lassen, fallen die Bashismen manchmal nicht auf, selbst wenn man sein Skript mit "#!/bin/sh" beginnt...
Jaaa Mann, die Scheiße ist mir auch schon des Öfteren passiert ;)) - beim ersten Mal hab ich noch richtig lange nach meinem Fehler im Script gesucht bis ich den eigentlichen Fehler entdeckte ;)) zum Haare ausreisen war das - aber das passiert einem nur einmal - mittlerweile ist das einer der ersten Dinge um die ich mich bei einer Fehleranalysen kümmere ;))

Mittlerweile nutze ich "#!/usr/bin/env bash" um sicherzustellen, dass er sich auch die Bash krallt ... anstelle von irgendwelchen anderen Shells mit denen man sonst später die buntesten Überraschungen erfahren würde ;)

Benutzeravatar
LessWire
Beiträge: 558
Registriert: 21.11.2004 04:36:04
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Bavaria

Re: Upper Case & Lower Case

Beitrag von LessWire » 07.09.2010 06:15:42

Im package "devscripts" ist das Perl-Script "checkbashisms" enthalten.

Damit lässt sich z.B. feststellen, ob ein bash script zur schlankeren dash kompatibel ist.

Gruß, LW.
at ~ now.

Antworten