GNU/Linux >> Belajar Linux >  >> Linux

Mengapa bash tidak berhenti pada kesalahan karena kegagalan dalam urutan perintah hubung singkat?

Logikanya di sini adalah bahwa Anda menggunakan && sudah adalah pengecekan kesalahan. Cara yang sama bash tidak menangani kegagalan dalam if kondisi layak dibatalkan, bahkan dengan set -e .

Saat Anda membungkus perintah dalam tanda kurung, Anda sebenarnya menjalankan perintah tersebut di dalam subkulit, jadi skrip itu sendiri hanya melihat kembalinya subkulit itu, yaitu:tidak mengetahui bahwa && terlibat sama sekali, sehingga dibatalkan seperti yang Anda harapkan.


Mengutip manual referensi:

Shell tidak keluar jika perintah yang gagal adalah bagian dari daftar perintah segera setelah kata kunci while atau until, bagian dari pengujian dalam pernyataan if, bagian dari perintah apa pun yang dieksekusi dalam &&atau || list kecuali perintah yang mengikuti final &&atau ||, perintah apa pun dalam pipeline kecuali yang terakhir, atau jika status pengembalian perintah dibalik dengan !


Linux
  1. Mengapa File Terjemahan Bash Tidak Berisi Semua Teks Kesalahan?

  2. Perintah Rm Dalam Skrip Bash Tidak Bekerja Dengan Variabel?

  3. bash sh - perintah tidak ditemukan

  1. Perintah bash bang:Trik yang harus diketahui untuk baris perintah Linux

  2. perintah yum-config-manager tidak ditemukan [Perbaiki]

  3. Bash:Mengapa skrip induk tidak berhenti di SIGINT saat skrip anak menjebak SIGINT?

  1. c_rehash :Perintah tidak ditemukan kesalahan – Solusi

  2. Perintah Tidak Ditemukan di Bash Tetap

  3. Mengapa Bash Tidak Menyimpan Perintah yang Dimulai Dengan Spasi?