如何解决在 Bash 与 ZSH 中结合 heredoc 和输入重定向
以下代码在 ZSH 上运行没有问题,将heredoc 与文件 test.csv 的内容结合起来:
cat <<EOF <test.csv
id,name,age
EOF
如何在 Bash 中编写相同的命令?
解决方法
$(<file)
将在 Bash 和 Zsh 中工作:
cat <<EOF
id,name,age
$(<test.csv)
EOF
它也可以在 Ksh 中工作(我相信它来自那里并被移植到 Bash 和 Zsh)。它的行为与 $(cat file)
相同,只是它不会调用 cat
并且完全由 shell 本身处理。
它在 Bash 文档 Command Substitution 部分中有描述:
命令替换 $(cat file) 可以替换为等效但速度更快的 $(
,除了 @blami's answer 之外,您还可以在命令组中使用 cat
两次(将所有 test.csv
存储在内存中所需的内存与运行 {{ 1}} 第二次)。
cat
或者,由于这里的文档太短,使用进程替换(仍然派生另一个进程):
{
cat <<EOF
id,age
EOF
cat test.csv
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。