How to assign a heredoc value to a variable in Bash? -
मेरे पास यह बहु-लाइन स्ट्रिंग (उद्धरण शामिल है):
abc'asdf " I न्यूलाइनों को संरक्षित करने की आवश्यकता है। मैं स्ट्रिंग में वर्णों से नहीं बचना चाहता हूँ, यह कष्टप्रद होगा ...
आप cat
के बेकार उपयोग से बच सकते हैं और इस के साथ बेमेल उद्धरणों को बेहतर ढंग से संभाल सकते हैं:
$ read -आर-डी '' VAR & lt; & lt; 'EOF' abc'asdf "$ (dont-execute-this) foo" बार "" EOF
अगर आप उद्धरण नहीं देते हैं चर जब आप इसे गूंजते हैं, नई लाइनें खो जाती हैं इसे उद्धृत करना उनको संरक्षित करता है:
$ "$ VAR" एस्कॉएड "$ (dont-execute-this) foo" बार "'' '
यदि आप स्रोत कोड में पठनीयता के लिए इंडेंटेशन का उपयोग करना चाहते हैं, तो निम्न-थानों के बाद डैश का उपयोग करें। इंडेंटेशन को केवल टैब का उपयोग करना चाहिए (कोई रिक्त स्थान नहीं)।
$ read -r - डी '' VAR & lt; & lt; - 'EOF' abc'asdf "$ (dont-execute-this) foo" बार "" EOF $ गूंज "$ VAR" abc'asdf "$ (dont-execute-this) foo "बार" ''
इसके बजाय, आप परिणामी चर की सामग्री में टैब को संरक्षित करना चाहते हैं, आपको IFS
से टैब को हटाने की आवश्यकता है। यहां दस्तावेज़ ( EOF
) के लिए टर्मिनल मार्कर को इंडेंट नहीं करना चाहिए।
$ IFS = '' read -r -d '' VAR & lt; & lt; 'EOF "एबीसीएएसडीएफ" $ (डॉन-एक्जिक्यूट-ए) एफयू "बार" '' ईओएफ $ इको "$ VAR" एबीसीएएसडीएफ "$ (डॉट-एक्जिक्यूट-ए) एफू" बार "''
- V टैब दबाकर कमांड लाइन पर टैब्स डाला जा सकता है। यदि आप एक संपादक का उपयोग कर रहे हैं, तो जिस पर एक, वह भी काम कर सकता है या आपको उस फीचर को बंद करना पड़ सकता है जो स्वतः टैब को रिक्त स्थान में परिवर्तित कर देता है।
Comments
Post a Comment