Warum verhält sich Echo mit der Option -e in der Befehlszeile anders als in einem SH-Skript?

Warum verhält sich Echo mit der Option -e in der Befehlszeile anders als in einem SH-Skript?

Ich verwende LinuxMint 17.2, Kernel 4.4.0-97-generic. Ich habe ein kleines TestEcho.sh-Skript erstellt, das Folgendes enthält:

#!/bin/bash
echo -e "\e[1;31m Text in Color \e[0m\n"
for code in {33..43}; do echo -e "\e[38;05;${code}m $code: Text in Color"; done ; echo "";

Wenn der echo -eBefehl in der Befehlszeile ausgeführt wird, gibt er die erwartete Ausgabe aus, d. h. er interpretiert den Escape-Code und zeigt den Text in Farbe an.

Derselbe Befehl in einem .sh-Skript scheint die Option echozu ignorieren und wird als wörtlicher Text angezeigt. Darüber hinaus scheint auch die For-Schleife defekt zu sein. Wird dies durch verursacht ? Und was noch wichtiger ist: Wie kann das Skript repariert werden?-e-eecho -e

ANTWORT(danke George Vasiliou): Führen Sie das Skript mit aus, bashanstatt mitsh

$ bash ~/Download/TestEcho.sh

echo -e in der Befehlszeile vs. innerhalb eines Sh-Skripts

Antwort1

bash und sh sind verschiedene Arten von Shells. bash ist die neueste und intelligentere als sh. In Ihrem Skript schreiben Sie, #!/bin/bashdass es mit basheiner Shell ausgeführt wird. Aber wenn Sie verwenden sh ~/Download/TestEcho.sh, wird es mit einer Shell ausgeführt sh.

verwandte Informationen