我熟悉以下语法:
cmd1 << EOF | cmd2
text
EOF
但是刚刚发现bash允许我写:
cmd1 << EOF |
text
EOF
cmd2
(heredoc用作cmd1的输入,而cmd1的输出通过管道传递到cmd2)。这似乎是一个非常奇怪的语法。便携吗?
一种方便的用例是,当您尝试将以空格分隔的表转换为以制表符分隔的表时,可以将其粘贴到Google Spreadsheets中。您无需创建临时文件。
—
Sridhar Sarnobat '18
第一个不适用于z-shell。我不喜欢第二个,因为它疏远了|。从命令中删除外壳管道的惯用语(?)。
—
Sridhar Sarnobat,
big-long-command1 with lots of args << EOF | big-long-command2 with lots of args
。“奇数语法”似乎是最好的方法。