Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1







Podobno człowiek...;)








Jak w temacie:
Porównanie dwóch licz (sum kontrolnych)
if [ "$zmienna1" -eq "$zmienna2" ] then echo "Suma się Zgadza!";
Bo w tej chwili wywala taki komunikat:
[: da824402877842bb077e46116d2fadeba6b7931e: oczekiwano wyrażenia całkowitego
Próbowałem na kilka sposobów z tego poradnika: http://bash.0x1fff.com/if-else
i lipa:
Cały skrypt wygląda tak:
#!/bin/bash
if test -r $1;
then file=$1;
fi;
echo 'Podaj sumę kontrolną:'
read suma
echo 'Wybierz typ sumy:'
echo 'sha1 => 1'
echo 'sha256 => 2'
echo 'sha512 => 3'
echo 'md5 => 4'
read typ
if ! test -r $file;
then
echo 'Wskaż plik do sprawdzenia'
echo '(ściezka):'
read file
fi;
echo "suma kontrolna: $suma"
if (($typ == 1))
then echo "rodzaj sumy to sha1";
elif (($typ == 2));
then echo "rodzaj sumy to sha256";
elif (($typ == 3));
then echo "rodzaj sumy to sha512";
elif (($typ == 4));
then echo "rodzaj sumy to md5";
else echo "Zły numer"
fi;
echo "sprawdzany plik: $file"
echo "Wszystko się zgadza?"
read okay
echo "Sprawdzam - proszę czekać"
if (($typ == 1))
then
kontrola=$(sha1sum $file |awk '{print $1}');
elif (($typ == 2));
then
kontrola=$(sha256sum $file |awk '{print $1}');
elif (($typ == 3));
then
kontrola=$(sha512sum $file |awk '{print $1}');
elif (($typ == 4));
then
kontrola=$(md5sum $file |awk '{print $1}');
else echo "Zły numer"
fi;
if [ "$kontrola" -eq "$suma" ]
then echo "Suma się Zgadza!";
else echo "Suma nieprawidłowa - radzę usunąć plik!";
fi;
echo "aby zakończyć - naciśnij Enter"
read ost
exit 0;EDYTA:
tak działa
if [ "$kontrola" == "$suma" ]
Pozdrawiam
;-)
Ostatnio edytowany przez Jacekalex (2010-10-13 05:15:51)
Offline




złodziej wirków ]:->
if [[ "$zmienna1" -eq "$zmienna2" ]] ; then echo dupa; fi
bashyzmy ;]
Offline



fakam fszycho
Jacekalex napisał(-a):
...
Porównanie dwóch licz (sum kontrolnych)
...
Najprościej byłoby w excelu :)
Offline




Użyszkodnik
if [ "$kontrola" = "$suma" ]
(z jednym znakiem równania; z dwoma to bashyzm).
BTW jeśli nie zależy Tobie na zgodności z innymi powłokami niż bash, możesz użyć wbudowanego polecenia select zamiast read do wybrania sposobu hashowania.
Aha: wywala Tobie błąd, ponieważ -eq służy do porównywania liczb, a da824402877842bb077e46116d2fadeba6b7931e trudno uznać za liczbę ;) .
Ostatnio edytowany przez Minio (2010-10-13 10:49:09)
Offline







Podobno człowiek...;)








Ok, jeszcze poprawię.
Dzięki
Offline
Strony: 1