บิวด์อินtest
และ[
ยูทิลิตีมีการทดสอบ-nt
("ใหม่กว่า") และ-ot
("เก่ากว่า") ในเชลล์ส่วนใหญ่แม้ว่าเชลล์จะทำงานใน "โหมด POSIX" (เช่นเดียวกับยูทิลิตี้ภายนอกของชื่อเดียวกันบน ระบบที่ฉันสามารถเข้าถึงได้) การทดสอบเหล่านี้ใช้สำหรับการเปรียบเทียบการประทับเวลาการปรับเปลี่ยนในสองไฟล์ เอกสารความหมายของพวกเขาจะแตกต่างกันเล็กน้อยในการใช้งาน (โดยคำนึงถึงสิ่งที่เกิดขึ้นหากไฟล์หนึ่งหรือไฟล์อื่นที่ไม่ได้อยู่) แต่พวกเขาจะไม่รวมอยู่ในข้อมูลจำเพาะ POSIX สำหรับtest
ยูทิลิตี้
พวกเขาจะไม่ถูกพาไปข้างหน้าใน
test
ยูทิลิตี้เมื่อคำสั่งแบบมีเงื่อนไขถูกลบออกจากเปลือก [KornShell] เพราะพวกเขาไม่ได้รวมอยู่ในtest
ยูทิลิตี้ที่มีอยู่ในการติดตั้งในอดีตของsh
ยูทิลิตี้
สมมติว่าฉันต้องการเปรียบเทียบการประทับเวลาการปรับเปลี่ยนระหว่างไฟล์ใน/bin/sh
เชลล์สคริปต์แล้วดำเนินการขึ้นอยู่กับว่าไฟล์หนึ่งใหม่กว่าอีกไฟล์หนึ่งดังเช่นใน
if [ "$sigfile" -nt "$timestamp" ] ||
[ "$sigfile.tmp" -nt "$timestamp" ]
then
return
fi
... ยูทิลิตี้อื่น ๆ ที่ฉันสามารถใช้นอกเหนือจากmake
(ซึ่งจะทำให้สคริปต์ที่เหลือไม่ได้พูดอย่างน้อยที่สุด) หรือฉันควรจะสมมติว่าไม่มีใครที่จะเรียกใช้สคริปต์ใน "การดำเนินการทางประวัติศาสตร์ของsh
" หรือลาออกเพื่อเขียนเปลือกเฉพาะเช่นbash
?
-nt
คุณสมบัติของtest
ในลักษณะที่คาดว่าตั้งแต่ประมาณ 1995. คุณควรใช้find
นิพจน์ basd แม้ว่าbash
คุณจะชอบพฤติกรรมที่ถูกต้องก็ตาม