Script test.sh
:bẫy ERR không được gọi khi thiết readonly biến
set -euo pipefail
function _trap_ext
{
echo '_trap_ext'
}
function _trap_error
{
echo '_trap_error'
}
trap "_trap_ext" EXIT
trap "_trap_error" ERR
readonly foo='bar'
foo='bar'
echo 'foobar'
Output:
./test.sh: line 14: foo: readonly variable
_trap_ext
Kịch bản chấm dứt tại dòng 14 vì lỗi (-e
tùy chọn) nhưng _trap_error
chức năng không phải là gọi là. Tại sao không?
GNU bash, phiên bản 4.1.2 (1) -release (x86_64-biết-linux-gnu), 4.2.45 (1) -release (i586-suse-linux-gnu)
FWIW Tôi không có lỗi này trong 4.3.33, nhưng tôi cũng không thấy bất kỳ điều gì trong [nhật ký thay đổi] (http://tiswww.case.edu/php/chet/bash/CHANGES) rõ ràng biểu thị sự sửa chữa của nó. – kojiro