ubuntuusers.de

Bash String Überprüfen

Status: Gelöst | Ubuntu-Version: Ubuntu 9.10 (Karmic Koala)
Antworten |

Alecane

Avatar von Alecane

Anmeldungsdatum:
31. März 2009

Beiträge: 213

Hallo Zusammen, ich bin noch ein Anfänger ☺

Darum frage ich wie muss ich vorgehen um eine String Variable auf Sonderzeichen zu Überprüfen?

1
2
3
4
5
6
echo "Geben Sie einen Namen ein: "; read name

ABFRAGE ob $name nur abc....z enthält; then
echo "Gültig"
else
echo "Ungültig"

Hoffe ihr versteht was ich möchte, habt ihr Lösungshinweise für mich?

Gruß Alecane

barcc

Avatar von barcc

Anmeldungsdatum:
13. Juli 2007

Beiträge: Zähle...

Wohnort: Dortmund

Du kannst alle Buchstaben aus dem string entfernen und dann prüfen ob er leer ist, ungefähr so:

#!/bin/bash
echo "Geben Sie einen Namen ein: "
read name
ungueltig=$(echo "$name" | sed 's/[a-z]//g')
if [ "$ungueltig" ]; then
echo "Ungültig"
else
echo "Gültig"
fi

Ist aber nicht getestet.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Hi Alecane,

das ist im Prinzip auch mit grep möglich:

echo "$name"  |  grep "[^a-z,A-Z]" 
if [ $? == 0 ]; then
        echo "Hab Sonderzeichen gefunden !"
fi

Die Gänsefüßchen bei echo sind wichtig, damit Zeichen wie ">" keinen Mist machen können.

Manchmal spielt einem aber das locale einen Streich, dann wird (bei unpassender Einstellung)
schon mal ein String unmittelbar vor dem ersten Sonderzeichen abgehackt.
Dagegen hilft nur, im Skript das Locale so einzustellen, dass es mit dem zu testenden String kompatibel ist.

LG,

track

Alecane

(Themenstarter)
Avatar von Alecane

Anmeldungsdatum:
31. März 2009

Beiträge: 213

Ich danke euch 😉

Ich habe es mit barcc vorschlag probiert und klappt super, nochmals Vielen Dank

Gruß Alecane

Alecane

(Themenstarter)
Avatar von Alecane

Anmeldungsdatum:
31. März 2009

Beiträge: 213

EDIT: Habe es so wie ich es wollte, wenn jemand Interesse hat ich schreibe es mal hier rein.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
echo -n "Bitte geben Sie einen Gültigen Namen ein: "
read scriptname

## Hier wird der eingegebene Name geändert, ä/ö/ü werden in ae/oe/ue geändert
scriptname=$(echo "$scriptname" | sed -e 's/ä/ae/g' -e 's/ö/oe/g' -e 's/ü/ue/g';)

## Hier werden alle Leerzeichen am anfang der Zeile entfernt
scriptname=$(echo "$scriptname" | sed 's/^ *\(.*\) *$/\1/';)

## Nun wird in diese Variable alle Zeichen geschrieben die nicht im a-z oder 0-9 enthalten sind
var=$(echo "$scriptname" | sed 's/[a-z/0-9]//g';)

## somit können wir jetzt Prüfen ob die variable leer ist oder nicht
if [ "$var" ]; then
{
        # sollte diese nicht Leer sein, ist der name ungültig
        echo "ungültig"
}
else
{
        # sollte die Variable leer sein ist der name gültig
        echo "gültig"
        echo $scriptname
}
fi

Ich danke nochmal für eure Schnelle und Perfekte Hilfe ☺☺

Antworten |