Bash: String Vergleich (Gruß- u. Kleinschreibung ignorieren)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
BeS
Moderator
Beiträge: 3236
Registriert: 17.04.2002 18:30:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Stuttgart
Kontaktdaten:

Bash: String Vergleich (Gruß- u. Kleinschreibung ignorieren)

Beitrag von BeS » 14.02.2007 16:13:50

Hallo,
ich bin auf der Suche nach einer eleganten Möglichkeit in der Bash zwei Strings zu vergleichen. Dabei soll z.B. "foobar" und "FooBar" als gleich gewertet werden.

Momentan mache ich das so:

Code: Alles auswählen

[..]
#alles in Kleinbuchstaben umwandeln
var1klein=`echo "$var1" | tr "[:upper:]" "[:lower:]"`
var2klein=`echo "$var2" | tr "[:upper:]" "[:lower:]"`

if [ "$var1klein" == "$var2klein" ]

[..]
Aber ich denke mir das muss doch auch schöner gehen (ohne den Hilfsvariablen var1klein und var2klein)?

Danke!
Deine Unterstützung für Freie Software kostet dich nur wenige Minuten: www.fsfe.org/support

Ich spreche von Freier Software!

Benutzeravatar
C_A
Beiträge: 1082
Registriert: 22.04.2004 14:51:01
Lizenz eigener Beiträge: GNU General Public License

Beitrag von C_A » 14.02.2007 18:47:52

mir wuerde da auf die schnelle was mit grep einfallen ob das huebscher ist sei dann dir ueberlassen :)

Code: Alles auswählen

if echo  bLa |grep -iq ^BLA$ ; then echo blume; fi

yeti

Beitrag von yeti » 15.02.2007 03:14:28

Code: Alles auswählen

a='foobar'
b='FooBar'
if [ $(echo $a | tr A-Z a-z) == $(echo $b | tr A-Z a-z) ] ; then
        echo 'Jo ey!'
fi

mario.neudeck
Beiträge: 455
Registriert: 07.09.2004 08:51:47
Wohnort: Dresden

Beitrag von mario.neudeck » 15.02.2007 07:49:33

Ich habe dazu im Skript vor meinen Auswertungen folgendes gesetzt:

Code: Alles auswählen

shopt -s nocaseglob
Damit wird wohl die Shell auf nicht case-sensitiv gesetzt. Da ließen sich dann Dateinamen, unabhängig von Groß- und Kleinschreibung, auswerten.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 15.02.2007 08:30:51

Interessant, was man mit shopt so alles an und ausschalten kann.

Code: Alles auswählen

cdable_vars     off
cdspell         off
checkhash       off
checkwinsize    on
cmdhist         on
dotglob         off
execfail        off
expand_aliases  on
extglob         off
histreedit      off
histappend      off
histverify      off
hostcomplete    on
huponexit       on
interactive_comments    on
lithist         off
login_shell     off
mailwarn        off
no_empty_cmd_completion off
nocaseglob      on
nullglob        off
progcomp        on
promptvars      on
restricted_shell        off
shift_verbose   off
sourcepath      on
xpg_echo        off
Kann nur keinen manual-Eintrag dazu finden.
Oh, yeah!

Benutzeravatar
armin
Beiträge: 2682
Registriert: 17.03.2005 11:49:14

Beitrag von armin » 15.02.2007 10:28:11

Code: Alles auswählen

man bash
Ist kein eigenes Kommando, sonder ein "builtin command" :)
Formerly known as Trigger.
HP 8510p - Debian Sid
Mitglied des Debian-KDE-Teams

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 15.02.2007 19:27:14

@Trigger.: Ja danke für den Hinweis, dass es sich hierbei um ein buildin command handelt und dass dieser in der manpage zu bash steht!
Oh, yeah!

Antworten