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
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
if [[ "$zmienna1" -eq "$zmienna2" ]] ; then echo dupa; fi
bashyzmy ;]
Offline
Jacekalex napisał(-a):
...
Porównanie dwóch licz (sum kontrolnych)
...
Najprościej byłoby w excelu :)
Offline
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
Ok, jeszcze poprawię.
Dzięki
Offline
Strony: 1