przegl

Potrzebujesz pomocy z C, C++, perl, python, itp.
debbian
Posty: 29
Rejestracja: 02 grudnia 2008, 23:05
Lokalizacja: /etc/passwd

przeglądanie pliku tekstowego w BASHu

Post autor: debbian »

Witam, mam na zadanie: napisać skrypt w bashu, który sprawdzi zawartość pliku tekst.txt pod kątem słowa bash. Jeśli tam je znajdzie pokazuje wiadomość Sukces, jeśli nie to Klęska.
Próbowałem coś takiego ale nie wiem jak porównać wynik grep do zmiennej $2

Kod: Zaznacz cały

#!/bin/bash
cat $1 |grep $2
if [[grep == $2]]; then
echo "Sukces"
else
echo "Kleska"
fi
Wywoływanie skryptu:

Kod: Zaznacz cały

 ./skrypt /sciezka/tekst.txt bash
Macie jakieś pomysły?
snah
Beginner
Posty: 103
Rejestracja: 19 lutego 2008, 09:09

Post autor: snah »

Użyj odwotnych apostrofów, np.

Kod: Zaznacz cały

zmienna=`ls`
przypisuje zmiennej zmienna wartość zwróconą przez polecenie ls.
Awatar użytkownika
lis6502
Member
Posty: 1798
Rejestracja: 05 listopada 2008, 20:14
Lokalizacja: Miasto Szybowców

Post autor: lis6502 »

albo $(), troszkę lepiej wygląda jeśli operujemy na zmiennych

Kod: Zaznacz cały

if [[$(grep) == $2]]; then 
RaV.
Posty: 87
Rejestracja: 28 czerwca 2006, 15:30
Lokalizacja: 127.0.0.1

Post autor: RaV. »

Kod: Zaznacz cały

#!/bin/bash
cat $1 | grep -q bash
if [ $? -eq 0 ]; then
        echo jest
else
        echo nie ma
fi
Pod zmienną $? jest trzymany rezultat wykonania ostatniego polecenia. 0 == sukces (bez błędów), każda inna wartość oznacza błąd.

Kod: Zaznacz cały

rav@hydra:~$ echo Hello World.
Hello World.
rav@hydra:~$ echo $?
0
rav@hydra:~$ cat notexistingfile.txt
cat: notexistingfile.txt: Nie ma takiego pliku ani katalogu
rav@hydra:~$ echo $?
1
Utumno
Beginner
Posty: 432
Rejestracja: 09 listopada 2008, 13:04
Lokalizacja: Gdansk

Post autor: Utumno »

skrypt masz kompletnie nieprawidlowy. Nie sprawdza w ogole co zwrocil grep, tylko sprawdza czy drugim parametrem skryptu byl string 'grep', a i to robi zle.
debbian
Posty: 29
Rejestracja: 02 grudnia 2008, 23:05
Lokalizacja: /etc/passwd

Post autor: debbian »

Kod: Zaznacz cały

#!/bin/bash
grep $1 $2
if [[$(grep) == $2]]; then
echo "Znalazlem slowo: $2"
else
echo "Nie znalazłem słowa: $2"
fi

Kod: Zaznacz cały

user:~# ./skrypt tekst.txt slowo
Nie działa.
Awatar użytkownika
lis6502
Member
Posty: 1798
Rejestracja: 05 listopada 2008, 20:14
Lokalizacja: Miasto Szybowców

Post autor: lis6502 »

Aleś kolego namieszał.
Polecam Ci lekturę tego i tego.
ODPOWIEDZ