spróbować
if ! grep -q sysa /etc/passwd ; then
grep
powraca true
jeżeli stwierdzi celu szukania i false
czy nie.
Więc NIE false
== true
.
if
ewaluacja w powłokach ma być bardzo elastyczna i wiele razy nie wymaga łańcuchów poleceń (jak napisałeś).
Również patrząc na twój kod, jak jest, należy pochwalić korzystanie z formy zastępczej cmd, ale pomyśl o tym, co wychodzi z procesu. Wypróbuj echo $(cat /etc/passwd | grep "sysa")
, aby zobaczyć, co mam na myśli. Możesz to zrobić dalej, używając opcji -c
(liczenie) do grep, a następnie wykonaj if ! [ $(grep -c "sysa" /etc/passwd) -eq 0 ] ; then
, która działa, ale jest raczej stara.
ALE, można korzystać z najnowszych funkcji powłoki (ocena arytmetyka) jak
if ! (($(grep -c "sysa" /etc/passwd) == 0)) ; then ...`
który także daje korzyści z wykorzystaniem c-LANG operatorów porównania oparte ==,<,>,>=,<=,%
i być może kilku innych.
W tym przypadku, za komentarz przez Orwellophile, ocena arytmetyka może być porównaniu dół jeszcze bardziej, jak
if ! (($(grep -c "sysa" /etc/passwd))) ; then ....
LUB
if ((! $(grep -c "sysa" /etc/passwd))) ; then ....
Wreszcie istnieje nagroda zwany w Useless Use of Cat (UUOC)
. :-) Niektórzy ludzie będą podskakiwać i płakać gothca! Powiem tylko, że grep
może przyjmować nazwę pliku na linii cmd, więc po co wywoływać dodatkowe procesy i konstrukcje rur, kiedy nie musisz? ;-)
Mam nadzieję, że to pomoże.
Czy '!' Nie powinno znajdować się w nawiasach? tj. [! WYRAŻ] ' – acraig5075
@ acraig5075 jest ważny tak czy inaczej, ale nie ma potrzeby, aby polecenie testowe (co jest nawiasami) w ogóle w tym zestawieniu. –