variablen vergleichen

oyster-manu

oyster-manu

toast
hallo.
ich suche eine möglichkeit variablen miteinander zu vergleichen. ich habs mit diff probiert, allerdings geht weder
diff -q `$var1` `$var2`
oder
diff -q "$var1" "$var2"
oder
diff -q '$var1' '$var2'

habs auch mal ganz ohne anführungszeichen probiert, aber nichts klappt.
 
diff vergleicht in der Regel Files. Vielleicht solltest Du den Variableninhalt in Files umleiten und diese dann mit diff untersuchen.

Was steht in den Variablen? Willst Du sie numerisch vergleichen oder als String? Schau mal in die Manpage von test.

Gruss, Phorus
 
@phorus: in dateien umleiten find ich immer nervig. die muss man ja nachher löschen :) in den variablen sind md5summen (also strings)
@mr fenix: jau das isses!

//EDIT: verflucht. es gibt zwar keine fehlermeldung, aber irgendwas scheint bei dem test nicht zu funktionieren.
wenn ich 2 unterschiedliche dateien vergleichen lasse, erscheint trotzdem die meldung dass die dateien übereinstimmen. hier mal der code:
Code:
#!/bin/bash

echo "Die Checksummen werden berechnet..."
checksum1=`echo $1 | md5sum`
checksum2=`echo $2 | md5sum`
echo "Checksummen wurden berechnet."
if [ -eq $var1 $var2 ]; then
echo "Die Dateien sind gleich."
else
echo "WARNUNG: Die Dateien sind NICHT gleich."
fi
kanns vllt daran liegen dass md5sum die summen mit leerzeichen ausgibt und diese test -eq aus dem tritt bringen?
die summen sehen nämlich so aus (ohne "): "ac78n289sfvnb2789n - "
 
Zuletzt bearbeitet:
Mit -eq vergleichst Du die Variablen numerisch. Wenn Du Strings vergleichen willst, zitier ich nochmal die manpage von test:

Code:
     s1 = s2       True if the strings s1 and s2 are identical.

     s1 != s2      True if the strings s1 and s2 are not identical.

     s1 < s2       True if string s1 comes before s2 based on the binary value
                   of their characters.

     s1 > s2       True if string s1 comes after s2 based on the binary value
                   of their characters.

Also

Code:
if [ $var1 = $var2 ]; then
  echo "Die Dateien sind gleich."
else
  echo "WARNUNG: Die Dateien sind NICHT gleich."
fi
 
Zuletzt bearbeitet:
ich bedanke mich recht herzlich! ;)

//EDIT:
hm. jetzt funktionierts leider auch nicht. es gibt mittendrin ne (fehler-)meldung:

Die Checksummen werden berechnet...
0029468bec0a46090f623bcfb416ad4b -
7fe3d19e1791f4acbe9ebf6192e908e8 -
Checksummen wurden berechnet.
md5differ: line 9: [: too many arguments #md5differ is der name des skripts.
WARNUNG: Die Dateien sind NICHT gleich.

es kommt immer zu dieser ausgabe, ob die dateien gleich sind oder nich. komischerweise sind die checksummen ebenfalls unterschiedlich auch wenn die dateien identisch sind (die cecksummen sind nur identisch, wenn man sie mit md5sum "per hand" berechnen lässt).
muss ich nach beenden des skripts die variablen-inhalte löschen? liegts vllt daran?
 
Zuletzt bearbeitet:
probiers mal so
Code:
checksum1=$(md5sum $1|cut -d' ' -f1)
checksum2=$(md5sum $2|cut -d' ' -f1)
if [ $checksum1 = $checksum2 ]; then
...
 
puh. und ich dachte das wird ein simples einsteiger skript. schade. was genau bedeuten die ` hinter cut -d?
 
md5sum liefert als ausgabe nicht nur die checksum sondern auch den dateinamen
Code:
$ md5sum dateixy
6539aac4bceb3ff808ebbd3d11e2ee8f dateixy
mit dem | cut -d' ' -f1 wird die 2. spalte der ausgabe also der dateiname weggeschnitten
 
oyster-manu schrieb:
puh. und ich dachte das wird ein simples einsteiger skript. schade. was genau bedeuten die ` hinter cut -d?
Hallo
Die Manpage von cut sagt dir, dass die Option -d den Feldtrenner bestimmt.:rtfm: :devil:
In diesem Fall ist es schlicht ein Leerzeichen, auch Space genannt.

Gruß Wolfgang
 

Ähnliche Themen

Wie komme ich an den Inhalt des Inhalts einer Variable?

diff in Bezug zu sed setzen

Bash - Zwei Binärdateien vergleichen (SQL Diff)

Mit VIM Dateien vergleichen und Unterschiede sichtbar machen

Text mit mehreren Zeilen und Sonderzeichen ersetzten

Zurück
Oben