45

我正在编写一些文档,markdown并且我想记录如何使用 bash HEREDOC 创建文本文件。这是我要记录的命令:

# cat > /tmp/answers.txt <<EOT
> value1=blah
> value2=something else
> value3=`hostname`
> value4=onetwothree
EOT

在降价中,使用 ` 将文本呈现为“代码”我尝试过这样做......

`# cat > /tmp/answers.txt <<EOT`
`> value1=blah`
`> value2=something else`
`> value3=\`hostname\``
`> value4=onetwothree`
`EOT`

...但这会导致看起来像这样的东西...

# cat > /tmp/answers.txt <<EOT
> value1=blah
> value2=something else
> value3=\

主机名
> value4=onetwothree
EOT

4

3 回答 3

60

原始的 Markdown 语法文档涵盖了这一点;它说你必须使用多个反引号将代码表达式括起来,所以像这样:

``here you go - ` this was a backtick``

呈现如下:

here you go - ` this was a backtick

如果您想在普通文本中包含反引号,而不是在代码块中,则反斜杠转义可以解决问题;例如这个:

Here's a backtick: \`; then, here's another one: \`

呈现如下:

这是一个反引号:`; 然后,这是另一个:`

(我在commonmarkgithub上对此进行了测试,它的行为相同,所以它不仅仅是 Stack Overflow 的怪事)

于 2014-09-19T22:07:41.103 回答
12

下面的代码块可以解决问题。

```
# cat > /tmp/answers.txt <<EOT
> value1=blah
> value2=something else
> value3=`hostname`
> value4=onetwothree
EOT
```

三个反引号表示它是代码片段,并且一个片段必须以另外三个反引号结尾。

有关 Markdown 的更多帮助,请参阅此CheatSheet。

于 2015-01-04T08:42:28.883 回答
9

我认为您需要将“分隔符”从单个反引号更改为双...

IE: ``value3=\`hostname\` ``

应该呈现

> value3=\`hostname\`

于 2014-06-19T17:57:21.927 回答