创建一个 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
我正在尝试使用 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
commandSome 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