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
Prüfung des Inhaltes einer Variable im Shell Script
Wenn Du eine Variable auf leeren Inhalt testen willst, verwende -z :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
Code: Select all
if [ -z "$var1" ] ; then
echo var1 ist leer
else
echo var1 ist nicht leer
fi
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..."
Schau mal hier, da liegt das Problem ähnlich: http://www.pl-forum.de/forum/viewtopic.php?t=1025923
Probier's mal so:
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:Jetzt geht die Shell zum 2. Mal an die Zeile heran, ersetzt $var1 durch "/linux/test" und setzt var3 auf diesen Wert.
OK?
Jochen
Probier's mal so:
Code: Select all
eval var3=\$var$zahl
Code: Select all
var3=$var1
OK?
Jochen
Die grösste Lüge der EDV? "Mal eben..."