[bash] problem przy porownaniu wartosci zmiennej

Potrzebujesz pomocy z C, C++, perl, python, itp.
fantomas
Posty: 16
Rejestracja: 27 lipca 2007, 12:35

[bash] problem przy porownaniu wartosci zmiennej

Post autor: fantomas »

mam maly problem z tym skryptem ;/ jest on do sprawdzania dzialania serwerow proxy. W pliku 1.txt mam liste ip i wywoluje program:

Kod: Zaznacz cały

#!/bin/bash
ilosc_ip_do_srawdzenia='grep -c * ip.txt'
liczba="1"


for $ilosc_ip_do_sprawdzenia>0
do
wywolane_ip=cat ip.txt | head -$liczba

strona=curl -x $wywolane_ip "http://wklej.org/"

sprawdzenie=grep obrazek $s -c -w -i

if $sprawdzenie > 0
then
echo "$sprawdzenie" >> /dobre.txt
fi

done
najpierw pobiera jedna linie z pliku ip.txt
pozniej curlem wchodzi przez proxy naq strone
nastepnie szuka slowa klucza na stronie
a pozniej jak znalazl przynajmniej jedno slowo klucz zapisuje ip do pliku dobre.txt

wynik dzialania:

Kod: Zaznacz cały

./1.sh: line 6: syntax error near unexpected token `>'
./1.sh: line 6: `for (($ilosc_ip_do_sprawdzenia > 0))'
:( co robie nie tak ?;/ ==> ">" jest normalnym porownaniem wartosci czy jest wieksze czy mniejsze ;/
Lorenzo
Beginner
Posty: 262
Rejestracja: 15 sierpnia 2006, 16:14
Lokalizacja: Kraków

Post autor: Lorenzo »

man bash
Rozdział gramatyka powłoki.
fantomas
Posty: 16
Rejestracja: 27 lipca 2007, 12:35

Post autor: fantomas »

musze przyznac ze bash jest troche inaczej skonstruowany od delphi ;) juz rozumiem dzieki <piwo>

[ Dodano: 2007-08-14, 21:21 ]
jeszcze mam problem z funkcja

Kod: Zaznacz cały

strona=`curl -x $wywolane_ip "jakas_www" 

sprawdzenie='grep -c 'mirror' $strona' 
jak wykonuje skrypt wszyskto dziala tylko wypisuje blad ;/

Kod: Zaznacz cały

grep: $strona: No such file or directory 
zle uzywam zmiennej strona? bo jak wpisuje samo grep -c 'mirror' jakas_www wszystko jest dobrze ;/ licze na chociaz podpowiedz ;/ troche trudno mi sie polapac w tym bashu bo caly czas bylem na windowsowym delphi ;/

//edit
używaj tagów code
mlyczek
Gość

Post autor: Gość »

fantomas pisze:strona=`curl -x $wywolane_ip "jakas_www"
Raczej tak :

Kod: Zaznacz cały

strona="$(curl -x ${wywolane_ip} jakas_www)"
fantomas pisze:sprawdzenie='grep -c 'mirror' $strona'
A to tak :

Kod: Zaznacz cały

sprawdzenie="$(grep -c 'mirror' ${strona})"
P.S.
Poprawki dotyczą tylko tych 2 linii, które tu podałeś - nie wiem jak masz z resztą :)


Pozdrawiam
fantomas
Posty: 16
Rejestracja: 27 lipca 2007, 12:35

Post autor: fantomas »

dzieki wielkie za odpowiedz dzieki Tobie zrozumialem troche wiecej ale nadal funkcja z grep wywala bledy ;/

Kod: Zaznacz cały

grep: unrecognized option `-->'
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
czyli to samo co bylo :( przeciez dobrze jej uzywam ;/ i grep mam zainstalowane w systemie ;/
aktualny skrypt:

Kod: Zaznacz cały

#!/bin/bash
d=`wc -l liczby.txt | sed -e "s/[ \ta-z.][ \ta-z.]*//g"`

for((licznik=1;licznik<$d;licznik++))
do
wywolane_ip="$(cat liczby.txt | head -$liczba)"

strona="$(curl -x ${wywolane_ip} "www.costam.pl
sprawdzenie="$(grep -c 'slowo_kluczowe' ${strona})"

if $sprawdzenie > 0
then
echo "$sprawdzenie" >> /dobre.txt
fi

done
juz dobrych pare dni sie z tym mecze ;/ i niewiem co moze byc nietak ;/
Gość

Post autor: Gość »

Na razie poprawię Ci troszkę tylko to co powyżej napisałeś :

Kod: Zaznacz cały

#!/bin/bash 

d="$(wc -l liczby.txt | sed -e 's/[ \ta-z.][ \ta-z.]*//g')"

for ((licznik=1;licznik<$d;licznik++)); do

	wywolane_ip="$(cat liczby.txt | head -$liczba)" 
	strona="$(curl -x ${wywolane_ip} [url]http://www.jakiś_adres.pl[/url])"
	sprawdzenie="$(grep -c 'slowo_kluczowe' ${strona})" 

		if [ "$sprawdzenie" -lt 0 ] ; then 
			echo "$sprawdzenie" >> dobre.txt 
		fi 
done
A teraz pytanie ...
masz wpisane head -$liczba
... a gdzie masz zdefiniowaną wcześniej $liczba ?


Pozdrawiam
fantomas
Posty: 16
Rejestracja: 27 lipca 2007, 12:35

Post autor: fantomas »

dzieki bardzo rzeczywiscie wielu rzeczy brakowalo ;/

ale nadal mi wywala blad ;/ taki sam jak wczesniej ;/

Kod: Zaznacz cały

grep: unrecognized option `-->'
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
grep mozna stosowac tylko do plikow ? nieda sie do zmiennych dynamicznych ? bo moze od zlej strony na to patrze ?;/ ale wydawalo mi sie ze gdzies widzialem jak ktos grep uzywa do zmiennych ;/

[ Dodano: 2007-08-17, 13:48 ]
chyba nieda sie ... zrobilem ze zmienna zapisuje do pliku a uzywam grep plik i niewywala bledow dzieki za pomoc

[ Dodano: 2007-08-17, 20:13 ]
no i nadal niedziala :( mam takie cos ;/

Kod: Zaznacz cały

#!/bin/bash
d="$(wc -l liczby.txt | sed -e 's/[ \ta-z.][ \ta-z.]*//g')"

for((licznik=1;licznik<$d;licznik++)); do

        wywolane_ip="$(cat liczby.txt | head -$licznik)"
        strona="$(curl -m 60 -x ${wywolane_ip}  strona
        echo "$strona" > temp.txt
        sprawdzenie="$(grep -c 'mirror' temp.txt >> ilosc.txt)"

        sprawdzenie2="$(cat ilosc.txt | head -1)"

        if [ "$sprawdzenie2" -lt 0 ] ; then
                echo "$sprawdzenie" >> dobre.txt
        fi

done
no ale i tak cos jest nie tak bo na kazdej stronie ktora sprawdze niezapisuje mi zadnego ip do pliku dobre.txt ;/ manualnie sprawdzalem i wszystko dziala ;/ a tak nie :(
ODPOWIEDZ