12

Я хочу сделать что-то вроде этого:

$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end

$ cat test
My name is John

Есть идеи?

1 ответ1

19
cat <<EOF > test
My name is $NAME
EOF

или даже

cat <<==end > test
My name is $NAME
==end

Работал на меня.

Похоже , когда вы берете ==end в ' не замещать.

ах, вот оно на странице руководства (смотрите 3.6.6):

Формат здесь-документов:

      <<[-]word
              here-document
      delimiter

Для слова не выполняется расширение параметров, подстановка команд, арифметическое расширение или расширение имени пути. Если какие-либо символы в слове заключены в кавычки, разделитель является результатом удаления кавычки в слове, а строки в документе здесь не раскрываются. Если слово не заключено в кавычки, все строки здесь-документа подвергаются расширению параметров, подстановке команд и арифметическому расширению. [...]

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .