Hallo,
ich führe folgendes Skript unter UNIX aus (bzw. das ist der „Minimal-Teil“ des Skripts; sind in Wirklichkeit natürlich noch darauffolgende Befehle vorhanden):
echo „Geben Sie die erforderlichen Parameter an:“
while ["$konto" -eq „“]
do
echo "Kontonummer: "
read konto
done
while ["$quell" -eq „“]
do
echo "Quelldatei: "
read quell
done
while ["$ziel" -eq „“]
do
echo "Zieldatei: "
read ziel
done
Nun erhalte ich folgende Ausgabe (sind natürlich meine Eingaben mit dabei):
Geben Sie die erforderlichen Parameter an:
Kontonummer:
5000001076
Quelldatei:
kontodat.txt
MySkript.sh[35]: kontodat.txt: bad number
Zieldatei:
ausg.txt
MySkript.sh[41]: ausg.txt: bad number
Woher kommt dieses „bad number“?
Das Skript wird nämlich korrekt ausgeführt…
Gruß,
Nina
Hallo,
while ["$konto" -eq „“]
…
while ["$quell" -eq „“]
…
while ["$ziel" -eq „“]
Kontonummer:
5000001076
Quelldatei:
kontodat.txt
MySkript.sh[35]: kontodat.txt: bad number
Zieldatei:
ausg.txt
MySkript.sh[41]: ausg.txt: bad number
Woher kommt dieses „bad number“?
Ganz einfach: Die eingegebenen Strings sind keine Nummern, gell?
Statt -eq (integer) mußt Du bei den Strings == verwenden !
siehe
http://www.tldp.org/LDP/abs/html/comparison-ops.html
Gruß,
Andreas
Hallo Andreas,
Ganz einfach: Die eingegebenen Strings sind keine Nummern,
gell?
Statt -eq (integer) mußt Du bei den Strings == verwenden !
Danke!
Ist zwar nur ein einfaches Gleichheitszeichen, und nicht ein doppeltes wie in C++
Aber es war ein leichtes, das auch noch rauszufinden 
Danke!
Gruß,
Nina
P.S.: kann es vielleicht sein, dass es je nach UNIX unterschiedlich ist, ob es ein einfaches oder doppeltes Gleichheitszeichen sein muss?!
Hallo,
P.S.: kann es vielleicht sein, dass es je nach UNIX
unterschiedlich ist, ob es ein einfaches oder doppeltes
Gleichheitszeichen sein muss?!
Öhm, vielleicht je nach Bash-Version.
Laut dem oben angegebenen Link sollte = Synonym für == sein.
Gruß,
Andreas