如何用bash中的任何内容回显字符串?

时间:2014-05-11 22:30:05

标签: linux bash shell command-line scripting

我很难弄清楚如何回应这个:

![alt text](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png "Logo Title Text 1")

我一直收到这个错误:

bash: ![alt: event not found

在它周围使用双引号不起作用。使用它周围的单引号确实有效,但是,我还需要回显其中包含单引号的字符串。那时我无法用单引号包装字符串。

有没有办法回应任何内容的字符串?

感谢。

编辑:这是一些背景信息。我正在制作一个Markdown渲染器来抓取代码编辑器的内容,然后将代码的每一行单独附加到一个文本文件中。我是这样做的:

echo TheLineOfMarkdown > textfile.txt

2 个答案:

答案 0 :(得分:1)

很烦人。我的建议:使用 \

调用历史记录完成,也在双引号内执行。因此,您需要单引引感叹号,但正如您所说,与不需要单引号其他单引号的冲突相冲突。

请记住,您可以混合引号:

$ echo '!'"'"'"'
!'"

(这只是一个参数。)但在这种情况下,反斜杠更容易输入,而且可能更具可读性。

答案 1 :(得分:1)

与许多编程语言不同,Bash中的'...'"..."不代表“字符串”本身;它们引用/转义它们包含的任何内容,但它们不会创建分隔参数的边界。因此,例如,这两个命令是等效的:

echo foobar
echo "fo"ob'ar'

因此,如果你需要用单引号引用一些参数,并且参数的不同部分必须包含单引号 - 没问题。

例如:

echo '![alt text](https://... "What'"'"'s up, Doc?")'

另一种选择是使用\,它类似于'...',只是它只引用一个字符。它甚至可以在双引号内使用:

echo "\![alt text](https://... \"What's up, Doc?\")"

有关详细信息,请参阅§3.1.2 "Quoting" in the Bash Reference Manual