【问题标题】:Create a npm command to create a file with content but without new line at the end创建一个 npm 命令来创建一个包含内容但末尾没有新行的文件
【发布时间】:2021-07-08 03:47:38
【问题描述】:

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

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

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

【问题讨论】:

  • 只是想找到一种简单快捷的方法来创建一个末尾没有新行的文件。如果有其他工具可以做到这一点,那就太受欢迎了。
  • 为什么不直接使用终端而不是使用 Node.js?
  • @tobias,我正在将其他命令与新创建的文件结合起来。

标签: node.js linux macos echo package.json


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    echo 命令的文档

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

    Documentation for NPM run-scripts

    运行脚本的实际 shell 取决于平台。默认情况下,在类 Unix 系统上是 /bin/sh 命令,在 Windows 上是 cmd.exe。 /bin/sh 所指的实际外壳也取决于系统。从 npm@5.1.0 开始,您可以使用 script-shell 配置自定义 shell。

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

    【讨论】:

    • 我最终得到了printf 命令。但是,您的回答也为我提供了非常有价值的信息。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 2018-05-04
    • 1970-01-01
    相关资源
    最近更新 更多