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

Create a npm command to create a file with content but without new line at the end

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

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

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

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

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

Documentation for echo command

Some shells may provide a builtin echo command which is similar or identical to this utility. Most notably, the builtin echo in sh(1) does not accept the -n option. Consult the builtin(1) manual page.

Documentation for NPM run-scripts

The actual shell your script is run within is platform dependent. By default, on Unix-like systems it is the /bin/sh command, on Windows it is the cmd.exe. The actual shell referred to by /bin/sh also depends on the system. As of npm@5.1.0 you can customize the shell with the script-shell configuration.

这里还有一个相关的 Whosebug 回答:"echo -n" works fine when executing script with bash, but not with sh

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

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