предварительно обработанный здесь документ

В приведенном ниже примере я ожидал строку $a=b в файле todel.txt. Как добавить текстовый блок здесь без обработки?

[root@localhost]# cat here_example.sh 
#!/bin/sh
cat > todel.txt << heredoc
<?php
$a=b
# this is comment
?>
heredoc

[root@localhost]# cat todel.txt 
<?php
=b
# this is comment
?>

person shantanuo    schedule 10.03.2011    source источник


Ответы (2)


Поместите кавычки вокруг «heredoc»:


#!/bin/sh
cat > todel.txt << "heredoc"
<?php
$a=b
# this is comment
?>
heredoc
person jcomeau_ictx    schedule 10.03.2011

На справочной странице bash(1):

Если какие-либо символы в word заключены в кавычки, delimiter является результатом удаления кавычек в word, а строки в этом документе не расширяются.

#!/bin/sh
cat > todel.txt << "heredoc"
<?php
$a=b
# this is comment
?>
heredoc
person Ignacio Vazquez-Abrams    schedule 10.03.2011