สาเหตุ `น้อยกว่า 'เพื่อออกด้วยรหัสสถานะที่ไม่ใช่ศูนย์


10

ฉันต้องการโครงสร้างคำสั่งต่อไปนี้:

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

lessนี้จะหยุดการดำเนินการขณะที่ผู้ใช้มีความสัมพันธ์กับ ผู้ใช้สามารถบังคับlessให้ออกจากสถานะที่ไม่เป็นศูนย์เพื่อป้องกันไม่ให้followup-commandทำงานได้อย่างไร

ฉันกำลังใช้ less 458 (POSIX regular expressions)

คำตอบ:


14

ในกรณีที่เรียบง่ายคุณสามารถขอให้lessไม่จัดการ SIGINT จากนั้นControl-Cจะฆ่ามันและรหัสทางออกจะไม่เป็นศูนย์ -Kทำเช่นนี้กับตัวเลือก

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

สำหรับวิธีแก้ปัญหาสำหรับรุ่นเก่าที่น้อยกว่าคุณสามารถทำสิ่งต่างๆได้เช่น

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

หากคุณไม่มี-Kให้ละเว้น แต่คุณจะต้องส่งสัญญาณแล้วพิมพ์ออกด้วย


less -Kยังคงส่งคืนรหัสออก 0 ใน ctrl-c สำหรับฉัน v418 บน mac และ v436 บน linux less -K test; echo $? => 0
Matt

มันน่าเศร้า ก็ ok บน v458 v481 และสำหรับหน้าคนหัวใจคู่สำหรับ-Kอย่างชัดเจนกล่าวว่าทางออก ... (มีสถานะ 2) เป็นของคุณหรือไม่
meuh

คนพูดว่าCauses less to exit immediately> greenwoodsoftware.com/less/news.443.html
Matt

ฉันได้เพิ่มวิธีแก้ปัญหาสำหรับผู้ที่มีอายุน้อยกว่า
meuh

2
โปรดทราบว่า^Cจะฆ่าcheck-statusถ้ายังไม่เสร็จ
Stéphane Chazelas
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.