在cat命令中逃离Unix中的美元符号

时间:2014-02-24 10:24:56

标签: bash shell unix escaping sh

在Ubuntu上,我想得到一个磁盘文件:

foo $(bar)

我想使用cat命令创建此文件,例如

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

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

2 个答案:

答案 0 :(得分:22)

您可以在此处的文档中使用常规引用运算符:

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

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

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

答案 1 :(得分:1)

反斜杠('\')适合我。我试过了,这是输出:

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

$ cat tmp.txt 
foo $(abc)

我在bash上尝试过。我不确定你是否必须在不同的shell中使用不同的转义字符。