Saya ingin melakukan sesuatu seperti ini:
$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end
$ cat test
My name is John
Ada ide?
Saya ingin melakukan sesuatu seperti ini:
$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end
$ cat test
My name is John
Ada ide?
Jawaban:
cat <<EOF > test
My name is $NAME
EOF
atau bahkan
cat <<==end > test
My name is $NAME
==end
Bekerja untukku.
Terlihat seperti ketika Anda mengambil ==end
dalam '
variabel tidak menggantikan.
ah, ini dia di halaman manual (lihat 3.6.6):
Format di sini-dokumen adalah:
<<[-]word here-document delimiter
Tidak ada perluasan parameter, substitusi perintah, ekspansi aritmatika, atau ekspansi pathname dilakukan pada kata . Jika ada karakter dalam kata yang dikutip, pembatas adalah hasil dari penghapusan kutipan pada kata, dan garis-garis dalam dokumen di sini tidak diperluas. Jika kata tidak dikutip, semua baris dokumen di sini mengalami perluasan parameter, penggantian perintah, dan ekspansi aritmatika. [...]
cat << "==end" > test
), tetapi tanda kutip memang mencegah substitusi.