ऑटोटूल से एक क्यू लें: बॉर्न और पोसिक्स शेल के सबसे कम आम भाजक से चिपके रहें - संभवतः द्वारा संवर्धित sed- यदि आपको कुछ लिखना है जो हर जगह काम करना होगा । ऐसे सिस्टम मौजूद हो सकते हैं जहां कुछ टूट जाता है, लेकिन आप पुनर्लेखन द्वारा ऐसी समस्याओं के आसपास काम कर सकते हैं।
उदाहरण के लिए, कुछ प्राचीन प्रणालियों में विस्तार त्रुटियों की समस्या है test, उर्फ [:
if [ $foo = bar ] ; then...
इसलिए ऑटोकॉन्फ़ प्रैक्टिस को दोहरे उद्धरण चिह्नों में एक एकल वर्ण उपसर्ग के साथ फिर से लिखना है , जैसे:
if [ x"$foo" = "xbar" ] ; then...
आप "x$foo"यहां भी इस्तेमाल कर सकते हैं। इस संभावना के खिलाफ गार्ड, जो $fooएक वैध विकल्प हो सकता है test(1), और चूंकि इसके [लिए एक उपनाम है test, यह अभिव्यक्ति की गलत व्याख्या कर सकता है। समाधान एक ऐसी स्थिति स्थापित करना है जहां अज्ञात तर्क [हमेशा शुरू होता है x, जिसका अर्थ है कि इसका कोई विशेष अर्थ नहीं हो सकता है [।
(ऑटोकॉन्फ़ testइसके बजाय का उपयोग करने की सिफारिश करता है [, लेकिन यह सलाह एम 4 के साथ संभावित संघर्षों की प्रतिक्रिया के रूप में आती है , जो [इसके सिंटैक्स में भी उपयोग होती है।)
awk POSIX है , इसलिए सैद्धांतिक रूप से यह हर जगह उपलब्ध है। यह बिजीबॉक्स में भी है , इसलिए आपके पास awkकुछ बहुत ही प्रतिबंधित एम्बेडेड लिनक्स सिस्टम में भी कार्यान्वयन होगा । फिर भी, मैं एक प्रणाली के बिना आने के लिए कम आश्चर्यचकित awkरहूंगा sed। मुझे लगता है कि यह जटिलता के लिए नीचे आता है: सरल उपकरण आक्रामक ट्राइएज से बचने की अधिक संभावना रखते हैं।
पर्ल किसी भी व्यापक मानक, POSIX या अन्यथा का हिस्सा नहीं है, इसलिए यदि आप लक्ष्य पर्यावरण के बारे में पहले से कुछ नहीं जानते हैं तो आप बस इस पर भरोसा नहीं कर सकते। डिफ़ॉल्ट रूप से पर्ल स्थापित नहीं है:
- Cygwin
- FreeBSD और NetBSD
- Slackware सहित कुछ लिनक्स के लिए "न्यूनतम" स्थापित करता है
- कई एम्बेडेड लिनक्स जो मुख्य रूप से अपने यूजरलैंड के लिए बिजीबॉक्स पर निर्भर करते हैं
ऑटोकॉन्फ़ मैनुअल में पोर्टेबल शेल प्रोग्रामिंग पर एक अध्याय है जो आपके लिए उपयोगी होना चाहिए। अंतिम खंड कवर उपकरण की तरह है sed, awk, और कई अन्य।