मेरे सिस्टम पर (Ubuntu 17.10) आपका उदाहरण वांछित के रूप में काम करता है, दोनों जब कमांड लाइन (टाइप) से टाइप किया जाता है sh
और जब sh
स्क्रिप्ट के रूप में निष्पादित होता है :
[bash]§ sh
$ STR="Hello\nWorld"
$ echo $STR
Hello
World
$ exit
[bash]§ echo "STR=\"Hello\nWorld\"
> echo \$STR" > test-str.sh
[bash]§ cat test-str.sh
STR="Hello\nWorld"
echo $STR
[bash]§ sh test-str.sh
Hello
World
मुझे लगता है कि यह आपके सवाल का जवाब देता है: यह सिर्फ काम करता है। (मैंने विवरणों का पता लगाने की कोशिश नहीं की है कि किस क्षण न्यूलाइन चरित्र का प्रतिस्थापन \n
होता है sh
)।
हालाँकि, मैंने देखा कि यह एक ही स्क्रिप्ट के साथbash
निष्पादित होने पर अलग तरह से व्यवहार करेगा और Hello\nWorld
इसके बजाय प्रिंट आउट करेगा :
[bash]§ bash test-str.sh
Hello\nWorld
मैं bash
निम्नानुसार वांछित आउटपुट प्राप्त करने में कामयाब रहा :
[bash]§ STR="Hello
> World"
[bash]§ echo "$STR"
चारों ओर दोहरे उद्धरणों पर ध्यान दें $STR
। यदि यह bash
स्क्रिप्ट के रूप में सहेजा और चलाया जाता है, तो यह व्यावहारिक रूप से व्यवहार करता है ।
निम्नलिखित भी वांछित उत्पादन देता है:
[bash]§ echo "Hello
> World"