执行 shell 脚本时使用 echo 选项

Use echo options when execution shell script

在 mac OSX,我有这个脚本:

#!/usr/local/bin/bash
echo -e "\e[41mError: Some error.\e[0m"

当我在控制台中 运行 echo -e ... 时,它会打印彩色文本“错误:一些错误。”

当作为脚本 sh myscript.sh 执行时,它会随意打印标志和转义字符:-e "\e[41mError: Some error.\e[0m".

当我将脚本位置添加到 ~/.bash_profile 并以 myscript.sh 执行它时,它确实有效。但我需要能够在不将其添加到我的 bash 配置文件的情况下执行它。

编辑:使用 printf 有效:printf "\e[41mError: Some error.\e[0m\n".

当你 运行 shell 和 sh 它 运行 处于 posix 兼容模式(即像 bourne shell 那样)

bash 是此 shell 的继承者,它添加的功能之一是 -e 切换到 echo

在 posix shell 中您不需要 -e,无论如何都会评估转义符

在 bash 中你这样做,所以如果你想 运行 bash 明确地这样做