Warum bekomme ich immer "bad" wenn ich code22 eingebe?
read word
if [ echo "$word| md5sum" = "fbdd091e12a83a78eed04554a688447c -" ] ; then
echo "nice"
else
echo "bad"
fi
mfg Simon
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
Das Script liefert bei der Ausführung folgende Fehlermeldung:
line 3: [: too many arguments
Abgesehen davon würde das Script aber immer bad zurückliefern, da die Bedingung nie wahr wird:
echo "$word| md5sum" gibt code22| md5sum zurück. Mit `echo $word| md5sum` bekommst Du die Ausgabe von md5sum als String zurück, zum Vergleich muß dieser noch in Anführungszeichen eingefasst werden.
Abgesehen davon: Zumindest bei mir (Ubuntu 8.10) gibt md5sum zwei Leerzeichen zwischen md5 und dem Dateinamen aus.
Mit
if [ "`echo $word| md5sum`" = 'fbdd091e12a83a78eed04554a688447c -' ]
läufts dann wie gewünscht. Solltest dem Script auch noch ein
#!/bin/bash
voranstellen...
Gruß
Borlander
woher weiß ich ob ich ' oder " verwenden soll?
Der Text innerhalb von ' wird direkt übernommen. Innerhalb von " werden Variablen ausgewertet, oder aber auch Befehle innerhalb von ` ausgeführt.