[Bash] skrypt znajdujący deklaracje obiektów w plikach źródłowych

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
Enkidu
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 139
Rejestracja: 10 wrz 2008, 12:10
Płeć: Mężczyzna
Wersja Ubuntu: 13.04
Środowisko graficzne: Unity
Architektura: x86_64

[Bash] skrypt znajdujący deklaracje obiektów w plikach źródłowych

Post autor: Enkidu »

Hej,

muszę napisać skrypt, który będzie znajdował deklaracje obiektów w plikach źródłowych, razem z obsługą błędów składni polecenia, argumentów i brakiem dostępu. Skrypt ma działać jak polecenie czyli po wpisaniu do terminala:

./skrypt wzorzec pliki

Rozumiem, że cały skrypt da się napisać przy wykorzystaniu polecenia grep z argumentem -n, bo ma wyświetlać numer linii, gdzie znalazł się wzorzec, czyli:

Kod: Zaznacz cały

#!/bin/bash
N="$#"
for ((i=2; i<=N; i++))
do
echo $i
grep -n "$1" "$i"
done
Nie wiem czemu, ale nie działa. Jak zrobić, żeby można było podać więcej plików do przeszukania? I jak zrobić, żeby skrypt wyszukiwał wzorzec, który nie jest częścią innego słowa np. int w słowie minte?
otokan
Sędziwy Jeż
Sędziwy Jeż
Posty: 65
Rejestracja: 11 gru 2008, 11:20
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Re: [Bash] Problem z przekazaniem argumentów

Post autor: otokan »

Hej,

1. Grepa możesz uruchomić podając mu wiele plików do przeszukania: grep -w -n <wzorzec> <plik1> <plik2> <plik3> ...
2. Poczytaj o opcji -w do grepa
3. Wywołaj swój skrypt z debugiem: 'bash -x ./twoj_skrypt' będziesz widział jakie polecenia shell wykonuje
4. Ogólnie to możesz zamiast pętli zrobić po prostu 'grep -w -n "$@"'
5. Poczytaj o funkcji 'shift' w bashu jeśli potrzebujesz jednak pętli
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Re: [Bash] Problem z przekazaniem argumentów

Post autor: beluosus »

Może coś takiego:

Kod: Zaznacz cały

#!/bin/bash

pattern="$1"
shift
for i in "$@"
do
        grep -Hnw "$pattern" "$i"
done
Awatar użytkownika
Enkidu
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 139
Rejestracja: 10 wrz 2008, 12:10
Płeć: Mężczyzna
Wersja Ubuntu: 13.04
Środowisko graficzne: Unity
Architektura: x86_64

Re: [Bash] Problem z przekazaniem argumentów

Post autor: Enkidu »

Wow beluosus, działa :D Nie wyrzuca nawet błędnych wzorców (framgentów innych wyrazów).
To wszystko dzięki zastosowaniu -Hw? :)

otokan dzięki, nie widziełem, że bash ma swój własny debugger :D
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Bing [Bot] i 10 gości