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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2010-10-13 05:10:00

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

[SOLVED]bash - jaki jest prawidłowy zapis dla porównania zmiennych

Jak w temacie:
Porównanie dwóch licz (sum kontrolnych)

Kod:

if [ "$zmienna1"  -eq  "$zmienna2" ] 
then echo "Suma się Zgadza!";

Bo w tej chwili wywala taki komunikat:

Kod:

[: 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:

Kod:

#!/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

Kod:

if [ "$kontrola" == "$suma" ]

Pozdrawiam
;-)

Ostatnio edytowany przez Jacekalex (2010-10-13 05:15:51)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#2  2010-10-13 07:15:31

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: [SOLVED]bash - jaki jest prawidłowy zapis dla porównania zmiennych

Kod:

 if [[ "$zmienna1" -eq "$zmienna2" ]] ; then echo dupa; fi

bashyzmy ;]


LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

#3  2010-10-13 08:30:28

  ippo76 - fakam fszycho

ippo76
fakam fszycho
Zarejestrowany: 2009-02-22
Serwis

Re: [SOLVED]bash - jaki jest prawidłowy zapis dla porównania zmiennych

Jacekalex napisał(-a):

...
Porównanie dwóch licz (sum kontrolnych)
...

Najprościej byłoby w excelu :)


ippo76@jid.dug.net.pl

Moja składka do ZUS = 2/3, moja składka do OFE = 1/3;
Stan mojego konta w ZUS = 2XYZ, stan konta w OFE = 3XYZ.

Offline

 

#4  2010-10-13 10:45:05

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

Re: [SOLVED]bash - jaki jest prawidłowy zapis dla porównania zmiennych

Kod:

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

 

#5  2010-10-13 15:49:57

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [SOLVED]bash - jaki jest prawidłowy zapis dla porównania zmiennych

Ok, jeszcze poprawię.

Dzięki


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)