【问题标题】:why does "echo -n" command not work in a .sh script?为什么“echo -n”命令在 .sh 脚本中不起作用?
【发布时间】:2021-02-22 12:25:32
【问题描述】:

例如,我正在 .sh 文件中编写脚本,并且我想回显短语“字符串”而不带尾随空格/新行,因此我应该使用 echo -n "string" 就像我将如何实现这一点一样在 bash 或 zsh 中运行。但是,当我在 bash/zsh 中使用 sh 命令运行 .sh 时,.sh 文件只会打印 -n string,并包含一个新行。如何在使用echo 命令的同时打印不带新行的内容?

【问题讨论】:

  • 使用printfecho 的实现是非标准的大杂烩。
  • 如果您坚持使用echo,唯一真正可靠的做法是修剪换行符:echo string | tr -d \\n。但是使用printf string 会更好

标签: bash shell sh zsh


【解决方案1】:

bashecho 命令的实现与 POSIX 规范大不相同。当bashsh 运行时,echo 的行为更多类似于 POSIX 的意图,但您的 sh 也可能不是bash,而是一个 shell像 dash 一样,它更严格地遵守 POSIX 规范,不允许任何扩展。 POSIX 要求 -n 被视为与任何其他参数一样,需要输出而不是修改 echo 的行为。

请改用printf,它具有更严格的 POSIX 规范并且更便于移植。

printf 'string'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 2019-07-25
    • 2011-05-08
    • 1970-01-01
    相关资源
    最近更新 更多