Eco várias linhas de texto para um arquivo no bash?

4

Como escrevo:

$count = mysql_num_rows($result);
print "<h3>$count metal prices available</h3>";

para um arquivo, index.php?

Eu tentei:

echo "$count = mysql_num_rows($result);
print "<h3>$count metal prices available</h3>";" > index.php

mas eu não entendo como escapar as aspas duplas que estão na entrada.

Seria melhor usar algo diferente de eco? Eu prefiro não reescrever o script PHP inteiro, se possível (é mais do que as duas linhas dadas no exemplo!).

    
por Richard 27.10.2011 / 15:38

2 respostas

10

Haveria várias maneiras de fazer isso:

 cat >index.php <<'EOT'
 $count = mysql_num_rows($result);
 print "<h3>$count metal prices available</h3>";
 EOT

ou

 echo '$count = mysql_num_rows($result);
 print "<h3>$count metal prices available</h3>";' > index.php

ou

 echo '$count = mysql_num_rows($result);' >index.php  # overwrites file if it already exists
 echo 'print "<h3>$count metal prices available</h3>";' >>index.php  # appends to file

há muito mais maneiras possíveis - use isso como ponto de partida para testar coisas ...

    
por 27.10.2011 / 15:58
2

No bash, tudo o que você precisa fazer é substituir as aspas externas por aspas simples:

echo '$count = mysql_num_rows($result);                                                                  
print "<h3>$count metal prices available</h3>";' > index.php

Se você precisar fazer coisas mais complicadas, poderá fazer eco várias vezes usando "> >" que acrescenta em vez de sobrescrever:

echo '$count = mysql_num_rows($result);' >> index.php
echo 'print "<h3>$count metal prices available</h3>";' >> index.php
    
por 27.10.2011 / 15:51