Shell STDIN重定向的三个反引号

时间:2019-05-02 05:18:21

标签: bash stdin

动机

我有一个Markdown反引号代码块,我想将其插入到列表项中。我尝试将awk与STDIN重定向一起使用很有趣。我遇到了以下问题。

问题

我改编自Tutorials Point的示例,以计算Markdown代码块的行数。

$ wc -l << EOF
```
codeblock
```
EOF
  • 预期输出:3
  • 实际输出:

    zsh: command not found: codeblock
    1
    

如何让shell在STDIN中解析奇数个反引号?

感谢阅读。

1 个答案:

答案 0 :(得分:3)

反引号用于command substitution,并且在here documents中扩展了命令替换。您应该用引号EOF-这将禁用所有扩展名,或转义那些反引号。

$ wc -l << 'EOF'
```
codeblock
```
EOF

3
$ 
$ wc -l << EOF 
\`\`\`
codeblock
\`\`\`
EOF

3