Chcę zrobić coś takiego:
$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end
$ cat test
My name is John
Jakieś pomysły?
Chcę zrobić coś takiego:
$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end
$ cat test
My name is John
Jakieś pomysły?
Odpowiedzi:
cat <<EOF > test
My name is $NAME
EOF
lub nawet
cat <<==end > test
My name is $NAME
==end
Pracował dla mnie.
Wygląda na to, jeśli wziąć ==end
w '
zmiennej nie zastępuje.
ah, oto strona man (patrz 3.6.6):
Format dokumentów tutaj to:
<<[-]word here-document delimiter
Na słowie nie jest wykonywana interpretacja parametrów, podstawianie poleceń, interpretacja arytmetyczna ani interpretacja nazw ścieżek . Jeśli cytowane są jakiekolwiek znaki w słowie , separator jest wynikiem usunięcia cudzysłowu w słowie, a wiersze w niniejszym dokumencie nie są rozwijane. Jeśli słowo nie jest cytowane, wszystkie wiersze dokumentu tutaj podlegają interpretacji parametrów, podstawianiu poleceń i interpretacji arytmetycznej. [...]
cat << "==end" > test
), ale twarde cudzysłowy rzeczywiście uniemożliwiają podstawienie.