Я хочу зробити щось подібне:
$ 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
в '
змінної , не замінює.
ах, ось це на сторінці man (дивись 3.6.6):
Формат тут-документів:
<<[-]word here-document delimiter
У слові не виконується розширення параметрів, підміна команд, арифметичне розширення або розширення імені . Якщо будь-які символи у слові цитуються, роздільник є результатом видалення лапки на слові, а рядки в документі тут не розширюються. Якщо слово не цитується, всі рядки документа тут піддаються розширенню параметрів, заміні команд та арифметичному розширенню. [...]
cat << "==end" > test
), але жорсткі цитати дійсно перешкоджають заміні.