Я хочу сделать что-то вроде этого:
$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end
$ cat test
My name is John
Есть идеи?
Я хочу сделать что-то вроде этого:
$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end
$ cat test
My name is John
Есть идеи?
Ответы:
cat <<EOF > test
My name is $NAME
EOF
или даже
cat <<==end > test
My name is $NAME
==end
Работал на меня.
Похоже, когда вы берете ==end
в '
переменную не заменяет.
ах, вот оно на странице руководства (смотрите 3.6.6):
Формат здесь-документов:
<<[-]word here-document delimiter
Для слова не выполняется расширение параметров, подстановка команд, арифметическое расширение или расширение имени пути . Если какие-либо символы в слове заключены в кавычки, разделитель является результатом удаления кавычек в слове, а строки в документе здесь не раскрываются. Если слово не заключено в кавычки, все строки здесь-документа подвергаются расширению параметров, подстановке команд и арифметическому расширению. [...]
cat << "==end" > test
), но жесткие кавычки действительно предотвращают подстановку.