【问题标题】:'echo' newline suppression [duplicate]“回声”换行抑制[重复]
【发布时间】:2011-02-08 08:46:35
【问题描述】:

尽管-n 写在单引号内,为什么$echo '-n' 不在终端上写-n

【问题讨论】:

  • 你使用什么语言?
  • 我猜这是一个shell语法问题(即bash或其他)。
  • @tripleee - 我不确定这个问题是不是引用的问题。正文中的问题似乎与名义上的摘要不同。你能再看一下吗?
  • 这不是 相反 情况(无意与有意)的重复吗?

标签: bash scripting newline echo


【解决方案1】:

你应该尽量使用更便携的printf

【讨论】:

  • 你能在你的回答中提供一个例子吗? (但没有“编辑:”、“更新:”或类似的 - 答案应该看起来好像是今天写的。)
【解决方案2】:

不完全在那里:

echo -e 'a-n\b\b\b '
 -n

令人惊讶的是,这有效:

echo -e '-n\b'
-n

这是一个我可以解释的解决方案:

echo "foobar" | sed 's/.*/-n/'
-n

【讨论】:

  • Re“这是我可以解释的解决方案”:你能透露一下解释吗?
  • sed 命令采用“foobar”并将其替换为“-n”。
【解决方案3】:

我发现以下内容只适用于 bash:

echo -n PRINT_THIS

所以,你应该把 -n 放在第一位。

【讨论】:

【解决方案4】:

你可以试试

echo -e '\055n'

【讨论】:

    【解决方案5】:

    引号没有帮助,因为......呃,很难解释。在评估“echo”命令本身之前,shell 会去掉引号,所以到那时它们已经无关紧要了。

    试试这个:

    echo - -n
    

    这没有记录为工作(我正在运行 Ubuntu Linux),但echo 几乎可以肯定是您使用的任何 shell 的内置,因此手册页无论如何都是有问题的。它对我有用。 (我正在运行zsh 因为我真的很温文尔雅)。

    编辑:好吧,bash 内置的 edit 似乎不是那样的。我不知道该建议什么;这个:

    echo '' -n
    

    会给你“-n”前面有一个空格,这(取决于你在做什么)可能没问题。

    【讨论】:

    • 对我不起作用。输出- -n
    • 对我来说这样做> echo - -n - -n
    • 嗯,正如我刚刚在编辑中指出的那样,它可能因外壳而异。
    • 对不起,我没有得到你。你能解释一下你的观点吗?
    • Linux/UNIX 系统支持多个命令行解释器(shell)。 echo 命令通常内置在每个命令中,并且确切的语法和功能可能会有所不同。您可能正在使用默认 shell,bash,它不像我的 shell (zsh) 那样工作。
    【解决方案6】:

    因为引号是由 shell 处理的,而echo 命令接收纯的-n。如果你想回显-n,你可以例如printf '%s\n' -n

    【讨论】:

    • 很遗憾--(选项结束)不受支持:(
    • 以下适用于 bash:echo -e -n\\c
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 2010-11-09
    • 2020-01-23
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多