gpt4 book ai didi

bash - 为什么 bash (但不是破折号)丢失命令替换内的 heredoc 中的换行符?

转载 作者:行者123 更新时间:2023-12-04 11:39:03 29 4
gpt4 key购买 nike

在 bash 中运行时,此命令:

cat <<EOF
hello \\
world
EOF
将按我的预期输出:
hello \
world
但是这个输出 hello \world (没有换行符),并且出乎意料:
echo "$(cat <<EOF
hello \\
world
EOF
)"
如果我用破折号运行第二个命令,则输出如预期(带有换行符)。
为什么在 bash 的第二个命令中删除了换行符?

最佳答案

因为您再次重新解析输出,所以双反斜杠已经被解析,现在单反斜杠引用了换行符,使其成为续行。
把它们都拿出来,它会像你期望的那样工作。

编辑
请参阅下面的评论。
我会删除答案,但有用的评论也会消失。

关于bash - 为什么 bash (但不是破折号)丢失命令替换内的 heredoc 中的换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68810873/

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