Herhangi bir komutun başarısız olması durumunda bash çıkışını hemen yapan “set -e” nin etkisi nasıl geri alınır?


205

set -eEtkileşimli bir bash kabuğuna girdikten sonra , sıfır dışında bir komut çıkarsa bash hemen çıkacaktır. Bu efekti nasıl geri alabilirim?

Yanıtlar:


309

İle set +e. Evet, o geriye bulunuyor etkinleştirmek ile kabuk seçenekleri set -ve devre dışı bunları set +. Tarihi kuru üzüm, donchanow.


Çok teşekkür ederim , sonuna kadar okumadığım ilgili manuel sayfanın ( faqs.org/docs/bashman/bashref_56.html ) son satırları arasında .
Tianyi Cui

Bash kılavuzu göz korkutucu derecede büyük, bu doğru. (FYI, yeni gibi göründüğünden: sorunuza en iyi yanıtın altındaki onay işaretini tıklamak için yapılan şey, buna "kabul etmek" denir.)
zwol

12
Ne yazık ki, Unix kabuk dili (çoğu 'bash'a özgü değildir), günümüzde hala yaygın olarak kullanılan en az dahili olarak tutarlı programlama dillerinden biridir. Bu küçük siğillerden daha fazlasını öğrenmek zorunda kalacaksınız. Ve bunun bir dokümantasyon hatası olduğunu söyleyebilirim.
zwol

10
tarihi üzüm kuru üzüm cehennemidir!
James

2
Son olarak, Bash: tek tire haksız dayak standart POSIX kabuk komut satırı seçeneği ve bu nedenle "bir şey yapmak" için en doğal seçenek. +gibi bir -şey üzerinden geçmek "≠" de olduğu gibi "değil" anlamına gelir.
Ciro Santilli 法轮功 at 病 六四 事件 法轮功

68

Her geçersiz kılmak istediğinizde set +e/ kullanmak kullanışlı olmayabilir set -e. Daha basit bir çözüm buldum.

Bunun gibi yapmak yerine:

set +e
command_that_might_fail_but_we_want_to_ignore_it
set -e

bunu şu şekilde yapabilirsiniz:

command_that_might_fail_but_we_want_to_ignore_it || true

veya tuş vuruşlarını kaydetmek ve biraz şifreli olmaktan sakınmak istiyorsanız:

command_that_might_fail_but_we_want_to_ignore_it || :

Bu yardımcı olur umarım!


11
Başka birinin merak etmesi durumunda tarihini merak ediyordum :ve cevabımı burada buldum .
3'lü tekerlek

4
Bu yalnızca çalıştırdığınız komutun dönüş kodunu önemsemiyorsanız geçerlidir.
Isaac

20
  • - yerine + kullanılması, bu bayrakların kapatılmasına neden olur.

Kaynak

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.