คุณจะค้นหาหมายเลขบรรทัดใน Bash ที่เกิดข้อผิดพลาดได้อย่างไร
ตัวอย่าง
ฉันสร้างสคริปต์ง่าย ๆ ต่อไปนี้พร้อมหมายเลขบรรทัดเพื่ออธิบายสิ่งที่เราต้องการ สคริปต์จะคัดลอกไฟล์จาก
cp $file1 $file2
cp $file3 $file4
เมื่อหนึ่งในcp
คำสั่งล้มเหลวแล้วฟังก์ชั่นจะออกกับทางออกที่ 1 เราต้องการเพิ่มความสามารถให้กับฟังก์ชันเพื่อพิมพ์ข้อผิดพลาดด้วยหมายเลขบรรทัด (ตัวอย่างเช่น 8 หรือ 12)
เป็นไปได้ไหม
สคริปต์ตัวอย่าง
1 #!/bin/bash
2
3
4 function in_case_fail {
5 [[ $1 -ne 0 ]] && echo "fail on $2" && exit 1
6 }
7
8 cp $file1 $file2
9 in_case_fail $? "cp $file1 $file2"
10
11
12 cp $file3 $file4
13 in_case_fail $? "cp $file3 $file4"
14
set -x
และ / หรือset -v
ติดตามสิ่งที่ถูกดำเนินการ ไม่ตรงกับที่คุณขอ แต่อาจเป็นประโยชน์เช่นกัน