SORU
11 Mayıs 2012, Cuma


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
11 Mayıs 2012, Cuma


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 == trueDEĞİ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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • alex maybury

    alex maybury

    20 Aralık 2007
  • Kayla Caton - Peet

    Kayla Caton

    23 HAZİRAN 2012
  • UsherVEVO

    UsherVEVO

    15 EKİM 2009