Bash 中的 Echo 换行符打印文字 \n
问:
如何打印换行符?这仅打印 \n:
$ echo -e "Hello,\nWorld!"
Hello,\nWorld!
答1:
huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。
请改用 printf:
printf "hello\nworld\n"
printf 在不同环境中的行为比 echo 更一致。
甚至 printf %"s\n" hello world - 如果参数太多, printf 将重用格式
OP 询问了 echo,而不是 printf;和下面@choroba 的答案,它使用 -e 选项,完美地填补了账单。
@JESii:如果您的 echo 恰好支持 -e 选项,它就适合。
对于某些版本的 echo,-e 只是打印在输出本身中,所以我认为这个答案是完全有效的,因为 echo 在这里不一致(除非我们谈论的是特定版本)。
如果 printf 可用,这很好,但与 echo 不同,有时 printf 不在发行版中。
答2:
一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会
确保你在 Bash 中。
$ echo $0
bash
所有这四种方式都对我有用:
echo -e "Hello\nworld"
echo -e 'Hello\nworld'
echo Hello$'\n'world
echo Hello ; echo world
-e 标志为我做了它,它“能够解释反斜杠转义”
我认为所有 *nix 操作系统上都不存在 -e 参数
@kenorb:它存在于 bash 中。它是内置的。
为什么第三个有效?没有 $ 它返回“Hello n world”
正如其他各种 -e 所述,不适用于所有发行版和版本。在某些情况下,它会被忽略,而在其他情况下,它实际上会被打印出来。我不相信这为 OP 修复了它,所以不应该被接受
答3:
打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!
echo $'hello\nworld'
印刷
hello
world
$‘’ 字符串使用 ANSI C Quoting:
$‘string’ 形式的单词被特殊处理。该单词扩展为字符串,并按照 ANSI C 标准的规定替换反斜杠转义字符。
@EvgeniSergeev 不确定你的意思,但它首先对我也不起作用。那是因为我使用了双引号,结果发现这只适用于单引号!在 Mac 上的终端中尝试过。
字符串中的变量没有被扩展的问题。
您仍然可以连接双引号字符串。
foo=“酒吧”;回声
′
′
''
′′foo’efoot’``
这就是我想要的。在 Xenial 上运行良好。
它像魅力一样在 GNU bash, version 4.4.23(1)-release (x86_64-pc-msys) W10 上起锅。
答4:
huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。
你总是可以做echo “”。
例如,
echo "Hello,"
echo ""
echo "World!"
echo "" 对我有用,我认为这是打印新行的最简单形式,即使这不能直接回答问题。干杯。
我认为它比 echo -en "\n" 不那么明显(因此可能更令人困惑)。
echo 足以获得空行
当您使用 read 时,\n 不起作用。但是您的方法适用于添加一行。
我无法在 Mac 上获得其他答案。我最终选择了这个非常明显的解决方案。 :)
答5:
与HuntsBot一起,探索全球自由职业机会–huntsbot.com
如果有人发现自己撞墙试图弄清楚为什么同事的脚本不会打印换行符,请注意这一点:
#!/bin/bash
function GET_RECORDS()
{
echo -e "starting\n the process";
}
echo $(GET_RECORDS);
如上所述,方法的实际运行本身可能被包裹在一个回声中,该回声取代了方法本身中可能存在的任何回声。显然,为了简洁起见,我淡化了这一点。不容易被发现!
然后,您可以通知您的同志,执行功能的更好方法如下:
#!/bin/bash
function GET_RECORDS()
{
echo -e "starting\n the process";
}
GET_RECORDS;
确保在将变量从方法中回显之前用引号括起来。
答6:
huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。
只需键入
echo
换一条新线
被严重低估的答案,不敢相信这个问题自 2011 年以来已经积累了 20 多个答案,而且没有一个包含这个简单的解决方案。
别名 c='echo ;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;回声;'这是我清除屏幕的唯一方法,谢谢!
@Ahi Tuna:请改用控制台键盘快捷键 :)
在清屏时,Ctrl+L 也会在大部分终端上清屏。
@AhiTuna 清除屏幕,只需输入 clear 命令
答7:
huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!
POSIX 7 上的回声
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
-e 未定义,反斜杠是实现定义的:
如果第一个操作数是 -n,或者任何操作数包含 <反斜杠> 字符,则结果是实现定义的。
除非您有可选的 XSI 扩展。
因此,我建议您改用 printf,这是明确指定的:
格式操作数应用作 XBD 文件格式表示法中描述的格式字符串 […]
File Format Notation:
\n <换行> 将打印位置移动到下一行的开头。
另请记住,Ubuntu 15.10 和大多数发行版都将 echo 实现为:
内置 Bash:帮助回显
一个独立的可执行文件: which echo
这可能会导致一些混乱。
答8:
一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会
str='hello\nworld'
$ echo | sed "i$str"
hello
world
这实际上是一个很好的答案,因为它适用于字符串连接。伟大的!
为什么还要调用第二个程序?这并不是说我们正在尝试用 bash 编写实时应用程序;)但这不是必需的。
答9:
huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式
你也可以这样做:
echo "hello
world"
这既适用于脚本内部,也适用于命令行。
在命令行上,按 Shift+Enter 在字符串内进行换行。
这适用于我的 macOS 和我的 Ubuntu 18.04 (Bionic Beaver) 系统。
答10:
huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式
在 Bash 4.4 中添加了一个 new parameter expansion 来解释转义序列:
${parameter@operator} - E 运算符扩展是一个字符串,它是带有反斜杠转义序列的参数值,扩展为使用 $‘…’ 引用机制。
$ foo='hello\nworld'
$ echo "${foo@E}"
hello
world
从函数外部打印作为函数内部变量的消息就像一个魅力。
答11:
huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。
我只使用 echo 没有任何参数:
echo "Hello"
echo
echo "World"
这是错误的,因为 Hello 后跟两个换行符,而不仅仅是一个。
原文链接:https://www.huntsbot.com/qa/veAd/echo-newline-in-bash-prints-literal-n?lang=zh_CN&from=csdn
与HuntsBot一起,探索全球自由职业机会–huntsbot.com