创建一个npm命令来创建一个包含内容但末尾没有新行的文件



我正在尝试使用echo -n命令将一些内容写入到节点的包.json中没有新行的文件中,例如

start: "echo -n hello > my.file"

当我运行npm start,而不是没有新行的hello时,它在my.file中创建-n hello。然而,它在我的终端中运行正常(我在Mac上(。

根据您的上下文,您可以使用printf而不是echo,后者不会自动附加n字符。

https://unix.stackexchange.com/questions/58310/difference-between-printf-and-echo-in-bash

这是由于NPM使用sh(1)shell运行脚本,该shell不接受-n选项。解决这个问题的一种方法是将NPM设置为使用Bash:

npm config set script-shell "/bin/bash"

echo命令的文档

某些shell可能提供与此实用程序类似或相同的内置echo命令。最值得注意的是,sh(1(中的内置echo不接受-n选项。请参阅内置(1(手册页。

NPM运行脚本的文档

脚本运行的实际shell依赖于平台。默认情况下,在类Unix系统上是/bin/sh命令,在Windows上是cmd.exe。/bin/sh引用的实际shell也取决于系统。截止日期npm@5.1.0您可以使用脚本shell配置自定义shell。

这里还有一个相关的StackOverflow答案:"echo-n";使用bash执行脚本时效果良好,但使用sh 时效果不佳

最新更新