Penyebab `kurang` untuk keluar dengan kode status bukan nol?

10

Saya ingin memiliki struktur perintah berikut:

command && check-status | less && followup-command

Ini akan menghentikan sementara eksekusi sementara pengguna berinteraksi less. Bagaimana cara pengguna memaksa lessuntuk keluar dengan status bukan nol untuk mencegahnya followup-commandberjalan?

Saya sedang menggunakan less 458 (POSIX regular expressions)

pengguna2943160
sumber

Jawaban:

14

Dalam kasus sederhana, Anda dapat meminta lessuntuk tidak menangani SIGINT, kemudian Control-Cakan membunuhnya dan kode keluar akan menjadi nol. Lakukan ini dengan opsi -K.

command && check-status | less -K && followup-command

Sebagai solusi untuk versi lama yang kurang, Anda dapat melakukan sesuatu seperti

command && bash -c 'trap "exit 1" int;check-status | less -K;' && followup-command

Jika Anda tidak memilikinya -K, abaikan saja, tetapi Anda harus memberi sinyal dan kemudian berhenti juga.

meuh
sumber
less -Kmasih mengembalikan kode keluar 0 pada ctrl-c untuk saya. v418 di mac dan v436 di linux. less -K test; echo $? => 0
Matt
itu menyedihkan. tidak apa-apa pada v458 dan v481 untuk saya. Halaman manual untuk -Ksecara eksplisit mengatakan keluar ... (dengan status 2) . Apakah milikmu
meuh
manusia hanya mengatakan Causes less to exit immediately> greenwoodsoftware.com/less/news.443.html
Matt
Saya telah menambahkan solusi untuk yang lebih tua kurang.
meuh
2
Perhatikan bahwa ^Cjuga akan membunuh check-statusjika belum selesai.
Stéphane Chazelas