Host: 127.0.0.1:80 > > EOF > )" 这肯定有效,但是-6ren">
gpt4 book ai didi

bash - Heredoc 不保留空行

转载 作者:行者123 更新时间:2023-11-29 09:23:18 26 4
gpt4 key购买 nike

在这里,我试图在 bash 中声明一个具有多行值的变量:

$ GET="$(cat <<EOF
> GET / HTTP/1.1
> Host: 127.0.0.1:80
>
> EOF
> )"

这肯定有效,但是文档末尾的空行丢失了:

$ echo "$GET"
GET / HTTP/1.1
Host: 127.0.0.1:80
$ cat <<< "$GET"
GET / HTTP/1.1
Host: 127.0.0.1:80

最佳答案

修剪尾随换行符的实际上不是 heredoc,而是命令替换。考虑使用 read 代替:

$ IFS= read -r -d '' var << EOF
> hello
> world
>
> EOF
$ printf "%s" "$var"
hello
world

$

请注意 printf 通常不会打印尾随换行符,因此变量 var 实际上有两个尾随换行符。

或者您可以简单地使用多行字符串:

var="  hello
world
"

关于bash - Heredoc 不保留空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37706646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com