保存在 *.sh 文件中时命令的行为不同

保存在 *.sh 文件中时命令的行为不同

我无法找到这个问题的答案,所以也许你们中的一个人可以帮助我:)

我编写了一些 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 !

相关内容