मैं निष्पादित निम्नलिखित बैश स्क्रिप्ट एक bash स्क्रिप्ट का उपयोग करना । इसके बजाय शाब्दिक पाठ $ संस्करण डाला जा रहा है।कैसे साथ sed
इसके बजाय मुझे $ संस्करण के वर्तमान मूल्य का उपयोग करने के लिए क्या करने की आवश्यकता है?
मैं निष्पादित निम्नलिखित बैश स्क्रिप्ट एक bash स्क्रिप्ट का उपयोग करना । इसके बजाय शाब्दिक पाठ $ संस्करण डाला जा रहा है।कैसे साथ sed
इसके बजाय मुझे $ संस्करण के वर्तमान मूल्य का उपयोग करने के लिए क्या करने की आवश्यकता है?
sed "s/\${version.number}/$version/" template.txt > readme.txt
केवल दोहरे उद्धरण डॉलर-चिह्न प्रतिस्थापन करते हैं। इसका मतलब यह भी है कि सिंगल कोट्स को भागने के लिए डॉलर के संकेत की आवश्यकता नहीं होती है।
तुम भी बस चर
sed 's/'${version.number}'/'$version'/' template.txt > readme.txt
यह सबसे अच्छा काम किया। – Val
यह थोड़ा पुराना है गंदें शब्द बोलना सकता है, लेकिन यह अभी भी उपयोगी हो सकता है ... मेरे लिए यह एक डबल भागने का उपयोग कर के रूप में फिलिप ने कहा कि (और कोष्ठक से बचने, अगर काम किया आप उनका उपयोग करते हैं ...):
#!/bin/bash
LIVE_DB_NAME='wordpress';
STAGING='staging';
sed -r "s/define\('DB_NAME', '[a-zA-Z0-9]+'\);/define('DB_NAME', '\\${LIVE_DB_NAME}');/" ${STAGING}/wp-config.php >tmp1;
लेकिन डॉलर के संकेत से बच जाना है क्योंकि अभिव्यक्ति को 'sed' द्वारा रेगेक्स के रूप में माना जाता है। तो मुझे लगता है कि यह '\\ $' होना चाहिए। – Philipp
@ फिलिप, वास्तव में '$ 'चिह्न केवल एक एंकर है जब यह रेगेक्स (या संभवतः उप-अभिव्यक्ति) का अंतिम चरित्र है। लेकिन मैं मानता हूं कि मुझे भाग्यशाली मिला। ;) आप वैकल्पिक रूप से एक बच निकला स्लैश जोड़ सकते हैं, लेकिन फिर यह '\\\ $' है। –
सुधार के लिए धन्यवाद। – Philipp