使用 LinuxMint 17.2,内核 4.4.0-97-generic。我制作了一个很小的 TestEcho.sh 脚本,其中包含:
#!/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 "";
该echo -e
命令在命令行中执行时会给出预期的输出。即它解释转义码并以颜色显示文本。
.sh 脚本中的相同命令echo
似乎忽略该-e
选项并显示-e
为文字文本。此外,for 循环似乎也被破坏了。这是由什么引起的echo -e
?更重要的是如何修复脚本?
回答(感谢 George Vasiliou):运行脚本bash
而不是sh
$ bash ~/Download/TestEcho.sh
答案1
bash 和 sh 是不同类型的 shell。 bash 是最新的并且比 sh 更智能。在您的脚本中,您编写的内容#!/bin/bash
意味着它将使用bash
shell 运行。但如果你使用的sh ~/Download/TestEcho.sh
话它将使用sh
shell 运行。