Экранирование знака доллара в Unix внутри команды cat

на Ubuntu я хотел бы получить дисковый файл, который читает:

foo $(bar)

Я хотел бы создать этот файл с помощью , например,

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

проблема в знаке доллара. Я пробовал несколько комбинаций символов обратной косой черты, одинарной кавычки и двойной кавычки и не могу заставить его работать.

2 ответов


вы можете использовать регулярные операторы цитирования в документе здесь:

$ 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. Я не уверен, Нужно ли использовать другой символ в другой оболочке.