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)

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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.