在Ubuntu,我想与读取磁盘文件,结束了:逸出Unix系统中的美元符号cat命令里面
foo $(bar)
我想用cat
命令来创建这个文件,例如
cat <<EOF > baz.txt
type_magic_incantation_here_that_will_produce_foo_$(bar)
EOF
问题是美元符号。我尝试了反斜杠,单引号和双引号字符的多种组合,并且无法使其工作。
在Ubuntu,我想与读取磁盘文件,结束了:逸出Unix系统中的美元符号cat命令里面
foo $(bar)
我想用cat
命令来创建这个文件,例如
cat <<EOF > baz.txt
type_magic_incantation_here_that_will_produce_foo_$(bar)
EOF
问题是美元符号。我尝试了反斜杠,单引号和双引号字符的多种组合,并且无法使其工作。
您可以在这里文档使用常规引用运算符:
$ cat <<HERE
> foo \$(bar)
> HERE
foo $(bar)
,或者你可以引述这里-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中使用不同的转义字符。
谢谢。我不知道我做错了什么! –
的可能的复制[如何猫<>包含代码的文件?在shell](https://stackoverflow.com/questions/22697688/how-to-cat-eof-a-file-containing-code-in-shell) –
tripleee