[bash] Sprawdzanie, czy znak występuje w ciągu
- tutsii
- Piegowaty Guziec
- Posty: 12
- Rejestracja: 25 mar 2010, 19:50
- Płeć: Kobieta
- Wersja Ubuntu: 10.04
- Środowisko graficzne: GNOME
- Architektura: x86_64
- Kontakt:
[bash] Sprawdzanie, czy znak występuje w ciągu
Witam,
mam za zadanie sprawdzić, czy w danym ciągu zapisanym w zmiennej znajduje się wybrany znak.
Dokładniej chodzi o sprawdzenie, czy w podanym przez użytkownika emailu znajduje się @. Próbowałam to zrobić za pomocą grep, ale z tego, co wyczytałam działa on na plikach więć trochę to mija się z celem.
Da się to zrobić jakoś prościej?
mam za zadanie sprawdzić, czy w danym ciągu zapisanym w zmiennej znajduje się wybrany znak.
Dokładniej chodzi o sprawdzenie, czy w podanym przez użytkownika emailu znajduje się @. Próbowałam to zrobić za pomocą grep, ale z tego, co wyczytałam działa on na plikach więć trochę to mija się z celem.
Da się to zrobić jakoś prościej?
- sulti
- Serdeczny Borsuk
- Posty: 139
- Rejestracja: 17 wrz 2007, 15:31
- Płeć: Mężczyzna
- Wersja Ubuntu: 12.10
- Środowisko graficzne: Unity
- Architektura: x86
Odp: [bash] Sprawdzanie, czy znak występuje w ciągu
grep tak samo potrafi parsować STDIN:
grep -c podaje liczbę wystąpień wzorca w parsowanych liniach.
Kod: Zaznacz cały
#!/bin/bash
email="user@domena.com"
if [ `echo $email | grep -c "@"` -eq 1 ]; then
echo "Email OK"
else
echo "Email NOT OK"
fi
You tried, and you failed, so the lesson is, never try.
- tutsii
- Piegowaty Guziec
- Posty: 12
- Rejestracja: 25 mar 2010, 19:50
- Płeć: Kobieta
- Wersja Ubuntu: 10.04
- Środowisko graficzne: GNOME
- Architektura: x86_64
- Kontakt:
Odp: [bash] Sprawdzanie, czy znak występuje w ciągu
Dziękuję bardzo 

- beluosus
- 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:
Odp: [bash] Sprawdzanie, czy znak występuje w ciągu
W sumie wystarczy:
Jeśli grep nie znajdzie wzorca to zwraca 0 (w sensie $?, a nie wydruk programu - żeby nie było niejasności).
Kod: Zaznacz cały
email="asdf@asdf"
echo $email | grep -q "@" && echo "Dobry" || echo "Zly"
- azhag
- Serdeczny Borsuk
- Posty: 151
- Rejestracja: 24 maja 2010, 19:30
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Fluxbox
- Architektura: x86
- Kontakt:
Odp: [bash] Sprawdzanie, czy znak występuje w ciągu
Owszem, grep może też operować na standardowym wejściu, jednakże liczenie linii wyjścia to nie jest dobre podejście. Prawidłowo wygląda to tak:
Operuj kodami wyjścia. (w szczegóły wprowadzi Cię Minio: http://minio.jogger.pl/2009/11/21/popul ... w-powloki/)
Nawiasem mówiąc na miejscu autorki sprawdziłbym poprawność za pomocą wyrażenia regularnego, żeby od razu odsiać te adresy, ktore wprawdzie @ zawierają, jednak z innego powodu są błędne.
Kod: Zaznacz cały
if echo $ADRES | grep -q "@"; then
echo "adres poprawny"
else
echo "adres błędny"
fi
Nawiasem mówiąc na miejscu autorki sprawdziłbym poprawność za pomocą wyrażenia regularnego, żeby od razu odsiać te adresy, ktore wprawdzie @ zawierają, jednak z innego powodu są błędne.
Polski portal Debiana: http://dug.net.pl/
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość