Hangisi daha iyidir: using; veya && bir satırda birden çok komut yürütmek için?

330

Eğiticiler ve nasıl yapılır? Sık sık komutları bir arada görürüm. Örneğin,

sudo apt-get update && sudo apt-get install pyrenamer

Dört olası bağlantı var gibi görünüyor: & , && , || ve ; . % Co_de% bağlayıcısı bana açık olsa da (arka plana bir işlem gönderir ve uçbirim kullanılabilir durumda bırakır), farkın & ve && arasında ne olduğu açık değildir. Ve Kaya'nın yorumuna kadar ; bilmiyordum.

Aşağıdaki sorular iki bağlayıcı arasındaki farkı ele alır, ancak çoğunlukla yorumlarda bulunur:

Öyleyse burada bir dizi soru var:

  1. || ve ; arasındaki fark nedir?
  2. Bunları ne zaman kullanmalısınız ? Bazı kullanım durumlarını görmek güzel olurdu: eğer bir komutu çalıştırmak istiyorsam ve bilgisayarımı kapattıktan sonra hangi bağlayıcıyı seçmeliyim?
  3. avantajları ve tehlikeleri nedir? Robie Basak bu yanıtı , && gibi bir komutun, komut zincirindeki ilk öğe başarısız olursa, yıkıcı sonuçları olabileceğini, örneğin.
  4. İlgili ise, nereden geliyorlar?
sordu don.joey 20.08.2013 18:41

4 cevap

599

Pardus:

A; B    # Run A and then B, regardless of success of A
A && B  # Run B if and only if A succeeded
A || B  # Run B if and only if A failed
A &     # Run A in background.
    
verilen cevap Jack 20.10.2014 13:02
77

&& , yalnızca ilk durum 0 durumundan çıkarsa ikinci komutu çalıştırır (başarılı oldu). ; , sıfır olmayan bir durumla ilk çıkarsa bile her iki komutu da çalıştırır.

&& değerine sahip örnek, eşdeğer olarak

olarak değiştirilebiliyor
if sudo apt-get update ; then
    sudo apt-get install pyrenamer
fi
    
verilen cevap choroba 20.08.2013 18:46
28

; değerini kullanmanız, ilk komutun başarılı olup olmamasına bakılmaksızın komutları yürütür.

&& kullanarak 2. komutu sadece ilk komut başarıyla yürütüldüğünde çalıştırır (durum 0).

Her ikisi de farklı bir perspektifte kullanılır. Daha uzun bir süreç için olduğu gibi, bir kurulum için derleyip derlemeniz gerektiğini söyleyin. % co_de olmalıdır. Bu nedenle, yükleme yalnızca make && make install başarılı olduğunda çalışır.

Yani bağımlı komutlar için make

kullanmalısınız.

Bash'i ya da bağımsız komutları kullanan komutları &&

kullanın.

Bilgisayarı kapatmak istiyorsanız, ilk iş bile başarısız oldu ; kullanın, ancak ilk işin tam başarısını istiyorsanız, kapatma ; uygulamasını başlatın

    
verilen cevap Web-E 20.08.2013 18:50
13

a ; b , b'nin çıkış durumundan bağımsız olarak b'yi çalıştıracaktır. a && b b yalnızca başarılıysa çalışır.

Bu, ilk 3 soruya cevap vermek için gerekli ve yeterlidir. Özellikle, 2 çok geniş ve "tek" kesin cevap verilemez - en iyi bahse konuya göre karar vermektir.

4. soruya gelince: Bash sözdizimi .

Her ikisini de kullanmanın bir tehlikesi yoktur. Yine, yukarıdaki tanım yeterlidir. % Co_de% 'nin && ' nin başarılı olmaması durumunda b 'nin istenmeyen etkileri olduğunda a yazacağınızı ifade eder. Daha fazla kural veya açıklamaya gerek yok, IMHO.

    
verilen cevap ignis 20.08.2013 23:05

Etiketlerdeki diğer soruları oku