md5check

hehejo

hehejo

blöder Purist
Hallo, ich wollte mir mal ein kleines Skript schreiben das von einer die md5summe bestimmt und sie dann mit einer vergleicht.

md5checl <to_check> <md5summe>


so sind bisher meine Überlegungen:
Code:
!#/bin/bash
md5= md5sum $1 | awk '{print $1}'
if[md5sum != $2] then
  echo "$1 is corrupt!"
fi

Lässt sich leider nicht ausführen... Irgendwas mit der Variablenzuweisung stimmt nicht.
In Bashprogrammierung bin ich echt NOOB.
Was mach ich falsch?
 
Code:
!#/bin/bash
md5=$(md5sum $1 | awk '{print $1}')
if[md5sum != $2] then
  echo "$1 is corrupt!"
fi

das sollte gehen.

Steve
 
Danke.

Die Variable nimmt er jetzt an, aber ich bekomme diesen Fehler:
Code:
!#/bin/bash
md5=$(md5sum $1 | awk '{print $1}')
if[md5sum != $2] then
  echo "$1 is corrupt!"
fi

./md5check.sh: line 5: syntax error near unexpected token `fi'
./md5check.sh: line 5: `fi'

Wenn ich hinter die ] ein ; mache kommt der Fehler, dass er [mdsum nicht kennt...
 
also ich mach das immer so
md5sum datei && echo 1234556789...
 
!#/bin/bash
md5= `md5sum $1 | awk '{print $1}'`
if[ "$md5" != "$2" ]; then
echo "$1 is corrupt!";
fi

versuch es doch mal so...
Ich hoffe ich hab nicht nur auf eine dumme Art die Fehlermeldung eliminiert

Niels
 
Code:
#!/bin/bash
md5=$(md5sum $1 | awk '{print $1}')
if[ $md5 != $2 ]; then
  echo "$1 is corrupt!"
fi
 
Ich habs jetzt genau so wie es bei Steve steht und es kommt dieser Fehler:
Code:
./md5check.sh: line 3: [15cfa4a7402315f5f218509d7ea7b34c: command not found
und bei nikster77s Version kommt das hier:
Code:
./md5check.sh: line 2: 3680b0b542c9aa9b1e812d0d192ae6bf: command not found
./md5check.sh: line 3: syntax error near unexpected token `then'
./md5check.sh: line 3: `if[ "$md5" != "$2" ]; then'

Also ich weiß nicht was ich falsch mache!
 
Er scheint den HASH-Wert bei dir für ein "substituiertes" kommando (oder wie man sowas nennt) zu halten.

!#/bin/bash
md5=` md5sum $1 | awk '{print $1}'`
if [ "$md5" != "$2" ]; then
echo "$1 is corrupt!";
fi

Die Leer- und Anführungszeichen sind auch sehr wichtig (z.B.: mit [ $md5 != $2 ] kann man der Shell nur
eine reine Zahlenkombi übergeben und dann auch nur mit: -eq , -lt statt != oder < usw.) hab ich mir sagen lassen... Auch muss man wohl genau diese `` Accent Graves (oder so) benutzen.

Dann ./<name_des_progs> <name_des_zu_checkende_files> <hashsumme_d_z_checkenden_Files>


Wenn es dann immer noch nicht funktioniert starte das Programm mal mit:

strace ./name_des_progs

Wenn da irgendwo (wahrscheinlich bei einer Library) -1 ENOENT auftaucht, lassen sich wahrscheinlich
Rückschlüsse auf den Fehler ziehen.

Lacht mich aus wenn ihr das alles schon gewusst habt, ich hab jedenfalls was gelernt.

Gruss

Niels
 
hmm wo is das prob?
hier mal das funzende script dazu:

#!/bin/bash

md5=$(md5sum "$1" | awk '{print $1}')

if [ "$md5" != "$2" ]
then
echo "$1 is corrupt!"
fi

exit 0
 
Danke!
Aber ich frage mich echt, was bei meiner Version dann immer falsch war.
 
Du hast in der zweiten Zeile ein blank zwischen dem dollar und der öffnenden Klammer. Zumindest ist das bei Steves Codeschnippsel der Fall.
 
Wow,
ich wusste garnicht, dass man hier so genau sein muss.
Kenn halt nur C/C++/Java... Denen ist mal so ein Leerzeichen egal.
Danke für den Hinweis!
 

Ähnliche Themen

Switche abfragen über Script

Rückgabe eines Befehls

Shell Skript beschleunigen

Telefoninterview (Wie sich auf Bash-Shell-Fragen vorbereiten?)

HandbrakeCLI Shell Skript

Zurück
Oben