Auf meinem System (Ubuntu 17.10) funktioniert Ihr Beispiel wie gewünscht, sowohl wenn es über die Befehlszeile (in sh
) eingegeben als auch als sh
Skript ausgeführt wird:
[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
Ich denke, das beantwortet Ihre Frage: Es funktioniert einfach. (Ich habe nicht versucht, Details herauszufinden, wie zu welchem Zeitpunkt genau die Ersetzung des Zeilenumbruchs durch \n
erfolgt sh
).
Ich bemerkte jedoch, dass sich dasselbe Skript bei der Ausführung mitbash
anders verhalten und Hello\nWorld
stattdessen ausdrucken würde :
[bash]§ bash test-str.sh
Hello\nWorld
Ich habe es geschafft, die gewünschte Ausgabe bash
wie folgt zu erhalten:
[bash]§ STR="Hello
> World"
[bash]§ echo "$STR"
Beachten Sie die doppelten Anführungszeichen $STR
. Dies verhält sich identisch, wenn es gespeichert und als bash
Skript ausgeführt wird.
Das Folgende gibt auch die gewünschte Ausgabe:
[bash]§ echo "Hello
> World"