Linux kabuğunu kullanırken sıfır çıkış durumu, boole mantığından farklı mı?


1

Mesela, ampersand operatörleriyle birlikte kabuğun içinde bir komut yürütürsem, örneğin command1&&command2ilk komutun başarılı bir şekilde yürütülmesi gerekiyorsa, bunu sıfır çıkış durumuyla yapar.

Bu, 0'ın yanlış ve 1'in doğru olduğu mantıksal boole mantığına benzer mi yoksa farklı mı? Yanlış mı anladım?

Kullandığınız kabuk türü bir fark yaratır mı? Şu anda Bourne-Again Shell'i çalıştırıyorum.

Yanıtlar:


1

Kabuk çoğunlukla sıfır hata ve başarıyı göstermek için 0'dır, bu yüzden evet, 0'ın yanlış olduğu birçok programlama dilinin aksine, mantıksal olarak doğrudur. Her ne kadar modern diller bugünlerde doğru ve yanlışın mantıksal değerlerine sahip olma eğilimindedir.


Bildiğim bütün mermiler. En çok dedim çünkü bütün kabukları tanımıyorum.
johnshen64 2

Teşekkürler. Bu, örneğin ||komut gibi gibi kontrol operatörleri kullanılırken sıfır olmayan bir çıkış durumuna ne kadar farklıdır command1||command2?
FıstıkMonkey

Eğer komut1 başarısız olursa komut2'yi çalıştırır, bu komut1 çıkış durumunun sıfır olmadığı anlamına gelir.
johnshen64

Neden boolean değerlerinin zıt temsilini seçtiklerini merak ediyorum.
FıstıkMonkey

İşte iyi bir açıklama, ry.ca/blog/category/tech/unix ama neden sadece bay . Tüm mermilerin orijinal dedesini geliştiren Bourne bunu bilirdi. Sanırım sadece 0 demek ya da hata yok, bu yüzden başarı, bu yüzden doğru.
johnshen64

1

Daha iyi bir mantık, gerçekten sadece bir 'başarı' olduğudur, ancak 'başarısızlık' için birçok sebep vardır: dosya bulunamadı, argüman hatası, hesaplama hatası, vb. İşlemler arası iletişimde - exit(2)sistem çağrısı tarafından gönderilen ve çağrı tarafından alınan dönüş kodu wait(2).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.