Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Prüfung des Inhaltes einer Variable im Shell Script

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Sonstiges
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
miki
Gast





BeitragVerfasst am: 06. Jul 2004 10:24   Titel: Prüfung des Inhaltes einer Variable im Shell Script

hi folks,

folgendes problem: ich will eine variable auf ihren Inhalt prüfen (einfach nur ob einer da ist)
var1=hier/steht/etwas

if [ $var1 == "" ]
then
..
else
..
fi
aber so tach ein Fehler in der Syntax auf:
operant expected( error token is : "hier/steht/etwas

kann mir da jemand helfen?
danke im vorraus
 

jochen
prolinux-forum-admin


Anmeldungsdatum: 14.01.2000
Beiträge: 699
Wohnort: Jülich

BeitragVerfasst am: 06. Jul 2004 11:48   Titel:

Wenn Du eine Variable auf leeren Inhalt testen willst, verwende -z :
Code:
if [ -z "$var1" ] ; then
    echo var1 ist leer
else
    echo var1 ist nicht leer
fi
Setze ausserdem Anführungszeichen ("") um die Variable, wenn sie leer sein kann, da die Shell sonst $var ganz aus der Zeile schmeisst und dann meist Operanden fehlen.

Allerdings habe ich Dein Skript mal per C'n'P übernommen und nur ".." durch echo ersetzt - die Fehlermeldung kommt bei mir nicht. Bist Du sicher, dass Du das Skript durch die bash ausführen lässt?

Jochen
_________________
Die grösste Lüge der EDV? "Mal eben..."
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

miki
Gast





BeitragVerfasst am: 06. Jul 2004 12:00   Titel:

danke für antwort jochen,
ich glaube der fehler liegt hier:

var1=/linux/test
zahl=1
var3=$[var$zahl]

echo $var3

rauskommen sollte jetzt:

/linux/test

aber das passiert nicht....dann kommt die fehlermeldung
 

jochen
prolinux-forum-admin


Anmeldungsdatum: 14.01.2000
Beiträge: 699
Wohnort: Jülich

BeitragVerfasst am: 06. Jul 2004 12:10   Titel:

Schau mal hier, da liegt das Problem ähnlich: http://www.pl-forum.de/forum/viewtopic.php?t=1025923

Probier's mal so:
Code:
eval var3=\$var$zahl


eval sorgt dafür, dass die Shell Variablenersetzungen, Wildcard-Auflösung usw. zweimal an der Zeile vornimmt. Zuerst löst eval eine Bearbeitung seiner Argumente durch die Shell aus. Die ersetzt $zahl durch "1". Das erste $-Zeichen lässt sie als Zeichen an und für sich stehen, da es durch den Backshasl entwerter wurde. Die Zeile sieht also nach der eval-Bearbeitung so aus:
Code:
var3=$var1
Jetzt geht die Shell zum 2. Mal an die Zeile heran, ersetzt $var1 durch "/linux/test" und setzt var3 auf diesen Wert.

OK?

Jochen
_________________
Die grösste Lüge der EDV? "Mal eben..."
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

miki
Gast





BeitragVerfasst am: 06. Jul 2004 12:16   Titel:

super...danke man Shocked
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Sonstiges Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy