Nasıl yapmak "eğer durum" true;?
echo
komut cat /etc/passwd | grep "sysa"
doğru olduğunda idam etmek istiyorum.
Neyi yanlış yapıyorum?
if ! [ $(cat /etc/passwd | grep "sysa") ]; then
echo "ERROR - The user sysa could not be looked up"
exit 2
fi
CEVAP
deneyin
if ! grep -q sysa /etc/passwd ; then
grep
eğer arama hedefi bulursa, ve eğer değil mi false
true
döndürür.
Yanifalse
== true
DEĞİL.
Kabukları 14 ** değerlendirme çok esnek olacak şekilde tasarlanmıştır, ve birçok kez komutları yazdığınız gibi zincirleri gerekmez.
Ayrıca, kodunuzu gibi bakıyor, cmd-değiştirme $( ... )
form kullanımı övgüye değer, ama süreç çıkıyor ne düşünmek. echo $(cat /etc/passwd | grep "sysa")
ne demek istediğimi görmek için deneyin. Daha fazla -c
(sayı) grep seçeneğini kullanarak alabilir ve bir iş ama oldukça eski olan if ! [ $(grep -c "sysa" /etc/passwd) -eq 0 ] ; then
okul yapın.
AMA, yeni kabuk özellikleri (aritmetik değerlendirme) gibi kullanabilirsin
if ! (( $(grep -c "sysa" /etc/passwd) == 0 )) ; then ...`
ayrıca kullanmanın yararı c-lang tabanlı karşılaştırma operatörleri ==,<,>,>=,<=,%
ve belki birkaç Diğerleri verir.
Orwellophile yorum başına bu durumda, aritmetik değerlendirme daha, gibi kırpılmış olabilir
if ! (( $(grep -c "sysa" /etc/passwd) )) ; then ....
YA
if (( ! $(grep -c "sysa" /etc/passwd) )) ; then ....
Son olarak, bir yokturödülUseless Use of Cat (UUOC)
denir. :-) Bazı insanlar yukarı ve aşağı atlar ve gothca ağlayacak! Sadece grep
komut-satırı üzerine bir dosya adı almak, neden gerek yok ekstra işler ve boru inşaatları çağırmak? olabilir derim ;-)
Bu yardımcı olur umarım.
Nasıl "eğer" bir sıralı diya...
Nasıl "yapmak" app eğer bir ...
İlk metin ile bir Android Spinner yapm...
&; Zincirleri " eğer önlemek için nası...
Bash: eğer herhangi bir komut başarısı...