Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

Passwortabfrage als bash script

malte simon / 3 Antworten / Baumansicht Nickles

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

bei Antwort benachrichtigen
Borlander malte simon „Passwortabfrage als bash script“
Optionen

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

bei Antwort benachrichtigen
malte simon Borlander „Das Script liefert bei der Ausführung folgende Fehlermeldung: line 3: : too...“
Optionen

woher weiß ich ob ich ' oder " verwenden soll?

bei Antwort benachrichtigen
Borlander malte simon „woher weiß ich ob ich oder verwenden soll?“
Optionen

Der Text innerhalb von ' wird direkt übernommen. Innerhalb von " werden Variablen ausgewertet, oder aber auch Befehle innerhalb von ` ausgeführt.

bei Antwort benachrichtigen