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.sh
linux发生了什么?
#! /bin/bash
因此您必须使用bash test.sh
.
表示当前目录。
./test.sh
,最后它成功了。请记住.
只有当脚本出现在当前目录中时,才运行该脚本。
/bin/echo
用dash(/bin/sh
)和bash;echo
bash或./tes.sh
两者均正常工作。以下代码bash
仅适用于。如果[$ UID -ne 0]; 然后回显“不是root用户”,否则回显“ root用户” fi