Bạn có thể khai báo f
là hàm chỉ đọc bằng cách sử dụng readonly -f f
hoặc declare -g -r -f f
( readonly
tương đương với declare -g -r
). Đây là -f
tùy chọn cho các tiện ích tích hợp sẵn này khiến chúng hoạt động f
như tên của một hàm, thay vì trên biến f
.
$ f(){ echo Hello; }
$ readonly -f f
$ f(){ echo Bye; }
bash: f: readonly function
$ unset -f f
bash: unset: f: cannot unset: readonly function
$ f
Hello
Như bạn có thể thấy, làm cho chức năng chỉ đọc không chỉ bảo vệ nó khỏi bị ghi đè, mà còn bảo vệ nó khỏi bị hủy đặt (loại bỏ hoàn toàn).
Hiện tại (kể từ bash-5.0.11
), cố gắng sửa đổi chức năng chỉ đọc sẽ không chấm dứt hệ vỏ nếu một người đang sử dụng errexit
tùy chọn shell ( set -e
). Chet, người bash
bảo trì, nói rằng đây là một sự giám sát và nó sẽ được thay đổi với phiên bản tiếp theo.
typeset -r
:typeset -rf f
.