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