![保存在 *.sh 文件中时命令的行为不同](https://linux22.com/image/74748/%E4%BF%9D%E5%AD%98%E5%9C%A8%20*.sh%20%E6%96%87%E4%BB%B6%E4%B8%AD%E6%97%B6%E5%91%BD%E4%BB%A4%E7%9A%84%E8%A1%8C%E4%B8%BA%E4%B8%8D%E5%90%8C.png)
我无法找到这个问题的答案,所以也许你们中的一个人可以帮助我:)
我编写了一些 shell 脚本来帮助我实现自动化,而且它们确实有效。但是,向我的 s 添加彩色文本是行不通的echo
。当直接将命令输入到我的终端时它可以工作,但当我将命令放入 *.sh 文件时它不起作用:
内容foo.sh:
echo "\n\e[1;37mHello World\e[0m\n"
谁能向我解释一下问题是什么?哦,我正在使用 zsh,如果这很重要的话。
预先非常感谢:)
更新
显然,当内容foo.sh是:
echo $'\n\e[1;37mHello World\e[0m\n'
我在以下位置找到了答案http://wiki.bash-hackers.org/syntax/quoting,这要归功于netmonk的回答。因此,我会接受他的答案作为正确的答案。谢了哥们 :)
答案1
当您保存sh
文件时,您可能会在所有内容前面添加“shell”声明行,如下所示:
#!/bin/sh
# the code
如果您想获得与在 shell 中测试时相同的结果,请将此行更改为代表您的 shell 的行。
答案2
是的,这很重要! echo 命令可以是不同的东西。 shell 程序内的内置命令,或单独且独立的命令。
这样,您可以认为您在 zsh 中使用的 echo 与您在 SH shell 脚本中调用的不一样! :)
你应该-e
在你的脚本中添加 echo !