Apakah ada perintah standar yang selalu keluar dengan kegagalan?

42

Saya ingin menguji skrip saya dengan perintah yang gagal. Saya bisa menggunakan perintah yang ada dengan argumen yang buruk. Saya juga bisa menulis skrip sederhana yang segera keluar dengan kegagalan. Kedua hal ini mudah dilakukan dan bekerja untuk saya, tetapi jika ada perintah standar untuk tujuan ini, saya ingin menggunakannya.

Matius
sumber
false, tetapi juga perintah yang tidak ada.
Kusalananda

Jawaban:

51

Anda dapat menggunakan false( /bin/false, /usr/bin/false, atau shell builtin):

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

Anda juga dapat menggunakan exit 1dari subkulit:

$ (exit 1) || echo Gosh, it failed too.
Gosh, it failed too.
$
mrb
sumber
Selain itu, Anda dapat memanggil keluar dengan sejumlah nomor di kisaran 1-255, termasuk. (Kebanyakan shell akan menerapkan operasi modulo 255 pada nomor lain yang diberikan untuk keluar, jadi dalam praktiknya Anda bisa lolos dengan nomor lain meskipun mereka hanya dipaksa masuk ke dalam rentang yang disebutkan di atas. Tetapi beberapa shell akan melakukan hal-hal lain, misalnya keluar dengan kesalahan sintaks (masih status kegagalan) jika dipanggil dengan nilai negatif. Sistem seperti unix hanya mendukung kode keluar dalam kisaran 0-255 inklusif, itulah sebabnya Anda tidak dapat mengandalkan perilaku yang didefinisikan dengan baik untuk nilai lain yang diberikan untuk keluar di semua kerang.)
mtraceur
1
Dan sebagai sedikit hal-hal sepele, kecuali jika Anda membutuhkan portabilitas untuk shell yang benar-benar tua / tidak jelas, Anda juga dapat melakukannya ! :(atau perintah lain yang biasanya mengembalikan kesuksesan). !mengatakan untuk meniadakan status keluar dari perintah yang mengikuti. :hanya perintah builtin noop yang selalu keluar dengan sukses. (Pastikan untuk meninggalkan spasi setelah !dan sebelum perintah dinegasikan, jika tidak maka akan mencoba menguraikannya sebagai satu perintah yang dimulai dengan !karakter - atau dalam kasus shell seperti bashdalam mode interaktif, ia mem-parsingnya sebagai salah satu dari mereka pengubah sejarah khusus.)
mtraceur