बिल्ट-इन test
और [
यूटिलिटीज के पास -nt
" -ot
गोले में" (" से अधिक नया") और ("पुराने से") परीक्षण होते हैं, तब भी जब शेल "पॉसिक्स मोड" में चल रहा होता है (समान नामों की बाहरी उपयोगिताओं के लिए भी सही है। वे प्रणालियाँ जिनकी मुझे एक्सेस है)। ये परीक्षण दो फाइलों पर संशोधन टाइमस्टैम्प की तुलना करने के लिए हैं। उनके प्रलेखित शब्दार्थ पूरे कार्यान्वयन में थोड़े भिन्न होते हैं (यदि एक या दूसरी फ़ाइल मौजूद नहीं है तो क्या होता है) के संबंध में, लेकिन वे 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
भीbash
आपको बेस अभिव्यक्ति का उपयोग करना चाहिए ।