Her zaman başarısızlıkla çıkacak standart bir komut var mı?


42

Komut dosyamı başarısız bir komutla test etmek istiyorum. Var olan bir komutu kötü argümanlarla kullanabilirim. Ayrıca hemen başarısızlıkla çıkan basit bir senaryo yazabilirim. Her ikisinin de benim için yapması ve çalışması kolaydır, ancak bu amaç için standart bir komut varsa, bunun yerine kullanmak isterim.


false, fakat aynı zamanda olmayan bir komut.
Kusalananda

Yanıtlar:


51

Kullanabilirsiniz false( /bin/false, /usr/bin/falseveya kabuk yerleşik):

$ false || echo It failed.
It failed.
$

Ayrıca exit 1bir alt kabuktan da kullanabilirsiniz :

$ (exit 1) || echo Gosh, it failed too.
Gosh, it failed too.
$

Ek olarak, 1-255 aralığındaki herhangi bir numaradan portala çağırabilirsiniz. (Çoğu kabuk, çıkış için verilen diğer numaralara bir modulo 255 işlemi uygulayacaktır, bu yüzden pratikte yukarıda belirtilen aralığa zorlanmış olsalar da diğer numaralardan kurtulabilirsiniz. Ancak bazı kabukları, örneğin negatif bir değerle çağrılırsa bir sözdizimi hatası (yine de bir başarısızlık durumu olsa da), Unix benzeri sistemler yalnızca 0-255 dahil aralığında çıkış kodlarını destekler, bu nedenle verilen diğer değerler için iyi tanımlanmış davranışlara güvenemezsiniz tüm mermilerden çıkmak için.)
mtraceur

1
Ve biraz önemsiz şeyler olarak, gerçekten eski / belirsiz kabukları için taşınabilirliğe ihtiyaç duymazsanız, aynı zamanda ! :(veya normalde başarılı olan herhangi bir emir) de yapabilirsiniz. !izleyen komutun çıkış durumunu reddettiğini söylüyor. :sadece her zaman başarı ile çıkan noop yerleşik komutudur. ( !Komutun reddedilmesinden önce ve sonra bir boşluk bıraktığınızdan emin olun , aksi takdirde onu bir !karakterle başlayan bir komut olarak ayrıştırmaya çalışır - veya bashetkileşimli modda olduğu gibi kabukları varsa Bu özel tarih değiştiricileri.)
mtraceur
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.