在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