Voglio fare qualcosa del genere:
$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end
$ cat test
My name is John
Qualche idea?
Voglio fare qualcosa del genere:
$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end
$ cat test
My name is John
Qualche idea?
Risposte:
cat <<EOF > test
My name is $NAME
EOF
o anche
cat <<==end > test
My name is $NAME
==end
Ha funzionato per me.
Sembra che quando si accetta ==end
la '
variabile non sostituisce.
ah, eccolo nella pagina man (vedi 3.6.6):
Il formato dei documenti qui è:
<<[-]word here-document delimiter
Nessuna espansione di parametro, sostituzione di comando, espansione aritmetica o espansione del percorso viene eseguita su word . Se vengono citati caratteri nella parola , il delimitatore è il risultato della rimozione della citazione nella parola e le righe nel documento qui non vengono espanse. Se la parola non è quotata, tutte le righe del documento qui sono soggette all'espansione dei parametri, alla sostituzione dei comandi e all'espansione aritmetica. [...]
cat << "==end" > test
), ma le virgolette impediscono davvero la sostituzione.