Strona 1 z 1

przeglądanie pliku tekstowego w BASHu

: 09 grudnia 2008, 16:57
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?

: 09 grudnia 2008, 18:31
autor: snah
Użyj odwotnych apostrofów, np.

Kod: Zaznacz cały

zmienna=`ls`
przypisuje zmiennej zmienna wartość zwróconą przez polecenie ls.

: 09 grudnia 2008, 18:40
autor: lis6502
albo $(), troszkę lepiej wygląda jeśli operujemy na zmiennych

Kod: Zaznacz cały

if [[$(grep) == $2]]; then 

: 09 grudnia 2008, 19:45
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

: 09 grudnia 2008, 19:45
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.

: 09 grudnia 2008, 20:50
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.

: 09 grudnia 2008, 21:01
autor: lis6502
Aleś kolego namieszał.
Polecam Ci lekturę tego i tego.