2010-08-18 12 views

cevap

217

set +e ile. Evet, kabuk seçeneklerinin set - ve 'u set + ile devre dışı bıraktığından geriye doğrudur. Tarihsel kuru üzüm, donchanow. yerine + kullanıldığında

+0

Çok teşekkür ederim, sonuna kadar okumadığım ilgili el kitabı (http://www.faqs.org/docs/bashman/bashref_56.html) son satırları arasında. –

+0

Başhk el kitabı muazzam derecede büyük, bu doğru. (FYI, yeni görünüyorsunuz diye, sorunuza en iyi cevabın altında onay işaretini tıklamak işin bitti, buna "kabul" denir.) – zwol

+0

Ve biçim [--abefhkmnptuvxBCHP] [- o seçenek] [argüman ...] 'gerçekten yanıltıcıdır. Basitçe, geri alma işleminin başka bir yerleşik tarafından yapıldığını, denenmemiş olduğunu ve hiçbir şey almadığını varsaydım. Bash 'set' ve' unset'de tersi olmayan, bash programlama hakkında çok az şey bildiğimi itiraf ederken ilginçtir. –

55

O set +e/set -e bunu geçersiz kılmak istediğiniz her zaman kullanmak unhandy olabilir. Daha basit bir çözüm buldum. Eğer tuş vuruşlarını kaydetmek istediğiniz ve şifreli biraz olmanın sakıncası yoksa,

command_that_might_fail_but_we_want_to_ignore_it || true 

ya:

yerine bunu böyle yapmanın:

set +e 
command_that_might_fail_but_we_want_to_ignore_it 
set -e 

bunu şöyle yapabilirsiniz:

command_that_might_fail_but_we_want_to_ignore_it || : 

Bu yardımcı olur umarız!

+11

': 'tarihini merak ediyordum ve cevabımı buldum [here] (http://stackoverflow.com/a/3224910/1094541), başka birinin merak ettiği durumda. – 3cheesewheel

+2

Bu, yalnızca, çalıştırmakta olduğunuz komutun dönüş kodunu almazsanız geçerlidir. – Isaac

İlgili konular