Tôi có một kịch bản đơn giản:Làm thế nào để bẫy ERR khi sử dụng 'đặt -e' trong Bash
#!/bin/bash
set -e
trap "echo BOO!" ERR
function func(){
ls /root/
}
func
Tôi muốn bẫy ERR nếu kịch bản của tôi không (vì nó sẽ ở đây b/c tôi không có quyền xem xét/root). Tuy nhiên, khi sử dụng set -e
nó không bị mắc kẹt. Nếu không có set -e
ERR bị mắc kẹt.
Theo trang man bash, cho set -e
:
... Một cái bẫy trên ERR, nếu được thiết lập, được thực hiện trước khi thoát vỏ. ...
Tại sao bẫy của tôi không được thực thi? Từ trang người đàn ông nó có vẻ như nó nên.
Ngoài ra: tốt hơn là _single-quote_ trình xử lý bẫy của bạn, trừ khi bạn rõ ràng muốn tham chiếu biến trong đó mở rộng _up front_. – mklement0