Các tiện ích tích hợp test
và [
tiện ích có các bài kiểm tra -nt
("mới hơn") và -ot
("cũ hơn") trong hầu hết các trình bao, ngay cả khi trình bao đang chạy trong "chế độ POSIX" (cũng đúng với các tiện ích bên ngoài có cùng tên trên hệ thống mà tôi có quyền truy cập). Các thử nghiệm này là để so sánh dấu thời gian sửa đổi trên hai tệp. Ngữ nghĩa tài liệu của họ hơi khác nhau giữa các lần triển khai (liên quan đến những gì xảy ra nếu một hoặc tệp khác không tồn tại), nhưng chúng không được bao gồm trong thông số POSIX. cho các test
tiện ích .
Chúng không được chuyển tiếp vào
test
tiện ích khi lệnh điều kiện được gỡ bỏ khỏi trình bao [KornShell] vì chúng không được bao gồm trongtest
tiện ích được tích hợp trong các triển khai lịch sử củash
tiện ích.
Giả sử tôi muốn so sánh dấu thời gian sửa đổi giữa các tệp trong /bin/sh
tập lệnh shell và sau đó thực hiện hành động tùy thuộc vào việc một tệp có mới hơn tệp kia hay không, như trong
if [ "$sigfile" -nt "$timestamp" ] ||
[ "$sigfile.tmp" -nt "$timestamp" ]
then
return
fi
... Tôi có thể sử dụng tiện ích nào khác, ngoài make
(điều này sẽ khiến phần còn lại của tập lệnh khó sử dụng nhất)? Hay tôi chỉ nên cho rằng không ai sẽ chạy kịch bản trên một "triển khai lịch sử sh
", hoặc từ chức để viết cho một trình bao cụ thể như thế bash
nào?
-nt
tính năngtest
theo cách được mong đợi kể từ khoảng. 1995. Bạn nên sử dụngfind
biểu thức cơ sở ngay cảbash
khi bạn thích hành vi đúng.