Eu quero fazer algo assim:
$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end
$ cat test
My name is John
Alguma ideia?
Eu quero fazer algo assim:
$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end
$ cat test
My name is John
Alguma ideia?
Respostas:
cat <<EOF > test
My name is $NAME
EOF
ou mesmo
cat <<==end > test
My name is $NAME
==end
Trabalhou para mim.
Parece que quando você pega ==end
a '
variável não substitui.
ah, aqui está na página do manual (veja 3.6.6):
O formato dos documentos aqui é:
<<[-]word here-document delimiter
Nenhuma expansão de parâmetro, substituição de comando, expansão aritmética ou expansão de nome de caminho é executada no word . Se algum caractere no word for citado, o delimitador é o resultado da remoção de aspas no word e as linhas no documento aqui não são expandidas. Se a palavra não estiver entre aspas, todas as linhas do documento aqui estão sujeitas a expansão de parâmetro, substituição de comando e expansão aritmética. [...]
cat << "==end" > test
), mas as aspas rígidas impedem a substituição.