Làm thế nào để bạn tìm thấy số dòng trong Bash nơi xảy ra lỗi?
Thí dụ
Tôi tạo tập lệnh đơn giản sau với số dòng để giải thích những gì chúng ta cần. Kịch bản sẽ sao chép các tập tin từ
cp $file1 $file2
cp $file3 $file4
Khi một trong những cp
lệnh thất bại thì chức năng sẽ thoát với thoát 1 . Chúng tôi muốn thêm khả năng cho chức năng để in lỗi với số dòng (ví dụ: 8 hoặc 12).
Điều này có thể không?
Kịch bản mẫu
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
và / hoặc set -v
để theo dõi những gì đã được thực hiện. Không chính xác những gì bạn yêu cầu nhưng nó cũng có thể sẽ hữu ích.