Sistemimde (Ubuntu 17.10) örneğiniz hem komut satırından (içine sh
) yazıldığında hem de komut sh
dosyası 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 \n
olur sh
).
Ancak, ben çalıştırıldığında bu aynı komut dosyası farklı davranabilir olacağını fark ilebash
ve çıktısını olur Hello\nWorld
yerine:
[bash]§ bash test-str.sh
Hello\nWorld
bash
Aş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 bash
komut dosyası olarak çalıştırıldığında aynı şekilde davranır .
Aşağıdakiler ayrıca istenen çıktıyı verir:
[bash]§ echo "Hello
> World"