Answers:
echo是Bash和dash(/bin/sh)中内置的shell 。如果从命令行运行echo,则使用的是Bash内置函数;如果要运行Shell脚本,sh则使用的是Dash内置函数。
破折号版本echo不知道该-e选项,而只是逐字输出任何内容,而无需对\序列进行任何特殊处理。
使用Bash运行您的Shell脚本,或者使用/bin/echo代替echo:
/bin/echo -e "\e[1;31mThis is red text\e[0m"
为避免使用不同版本的问题,echo您可能需要使用printf。相比之下,echo printf总是解释\序列,但不会在末尾自动添加换行符,因此如果需要,则必须在末尾追加\n。
如某些版本的用户printf不了解,\e您应该\033改用:
printf "\033[1;31mThis is red text\033[0m\n"
不要使用来运行它sh test.sh,它会像您说的那样以白色打印文本。创建脚本后,通过运行使其可执行,
sudo chmod +x /path/test.sh

使用sudo,like sudo ./test.sh或./test.sh两者都可以运行脚本。
要么
使用运行脚本bash,
bash /path/test.sh
chmod a+x test.sh,它以读取颜色打印文本。有什么区别。./test.sh应该等于sh test.shlinux发生了什么?
#! /bin/bash因此您必须使用bash test.sh
.表示当前目录。
./test.sh,最后它成功了。请记住.只有当脚本出现在当前目录中时,才运行该脚本。
/bin/echo用dash(/bin/sh)和bash;echobash或./tes.sh两者均正常工作。以下代码bash仅适用于。如果[$ UID -ne 0]; 然后回显“不是root用户”,否则回显“ root用户” fi