在cat命令中转义Unix中的美元符号

在Ubuntu上,我想结束一个磁盘文件,其内容如下:

foo $(bar) 

我想用cat命令创build这个文件,例如

 cat <<EOF > baz.txt type_magic_incantation_here_that_will_produce_foo_$(bar) EOF 

问题是美元符号。 我已经尝试了反斜杠,单引号和双引号字符的多种组合,并且无法使其工作。

你可以在这里的文档中使用正则引用操作符:

 $ cat <<HERE > foo \$(bar) > HERE foo $(bar) 

或者可以通过引用here-doc分隔符来禁用扩展:

 $ cat <<'HERE' # note single quotes > foo $(bar) > HERE foo $(bar) 

反斜杠('\')适用于我。 我试了一下,这里是输出:

 $ cat <<EOF > tmp.txt foo \$(abc) EOF $ cat tmp.txt foo $(abc) 

我在bash上试了一下。 我不确定是否必须在不同的shell中使用不同的转义字符。