Bad number

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 :wink:

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