Sistemimde (Ubuntu 17.10) örneğiniz hem komut satırından (içine sh) yazıldığında hem de komut shdosyası olarak yürütüldüğünde istediğiniz gibi çalışır :
[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
Sanırım bu sorunuza cevap veriyor: sadece işe yarıyor. (Böyle şey şu an için yeni satır karakterinin tam ikame itibariyle detaylar dışında şekle denemedim \nolur sh).
Ancak, ben çalıştırıldığında bu aynı komut dosyası farklı davranabilir olacağını fark ilebash ve çıktısını olur Hello\nWorldyerine:
[bash]§ bash test-str.sh
Hello\nWorld
bashAşağıdaki gibi istenilen çıktıyı almayı başardım :
[bash]§ STR="Hello
> World"
[bash]§ echo "$STR"
Etraftaki çift tırnaklara dikkat edin $STR. Bu, kaydedildiğinde ve bashkomut dosyası olarak çalıştırıldığında aynı şekilde davranır .
Aşağıdakiler ayrıca istenen çıktıyı verir:
[bash]§ echo "Hello
> World"