Score:0

วิธีรันเชลล์สคริปต์หลายตัว แต่ยกเลิกทั้งหมดหากพบข้อผิดพลาด / ยกเลิกไม่สำเร็จ

ธง jp

ฉันมีเชลล์สคริปต์ที่เรียกใช้เชลล์สคริปต์อื่นๆ หลายตัวพร้อมกัน เช่น ./run_all.sh ประกอบด้วย

./run1.sh &
./run2.sh &
./run3.sh &

รอ
echo "ครบทั้ง 3 ข้อ"

ฉันจะยุติกระบวนการทั้งหมดได้อย่างไร หากหนึ่งในนั้นออกจากกระบวนการเนื่องจากข้อผิดพลาด ฯลฯ เดอะ && ต้องการให้แต่ละสคริปต์ยุติได้สำเร็จ แต่ทำงานตามลำดับ

FedKad avatar
cn flag
คุณลองใช้คำสั่ง `รอ -n` หรือไม่ ดู: https://linuxize.com/post/bash-wait/
Score:0
ธง in

คุณอาจลองสิ่งนี้:

  { run1.sh || killtheothers.sh 1 ; } &
  { run2.sh || killtheothers.sh 2 ; } &
  { run3.sh || killtheothers.sh 3 ; } &

เพื่อให้แต่ละคำสั่งทำงานในพื้นหลัง (ผ่านไฟล์ &) แต่ถ้าคำสั่งใดๆ ล้มเหลว (ส่งคืนข้อผิดพลาด เช่น ไม่เป็นศูนย์ สถานะ) จากนั้นตัวดำเนินการควบคุม "หรือ" || อนุญาตให้สคริปต์ "killtheothers.sh" ทำงาน คุณจะต้องเขียน killtheothers.sh โดยอาจใช้คำสั่ง "killall" ฉันแสดงโดยใช้พารามิเตอร์เพื่อระบุว่าคำสั่ง runX ใดที่สคริปต์ไม่จำเป็นต้องฆ่า

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา