ฉันต้องการทำสิ่งนี้:
$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end
$ cat test
My name is John
ความคิดใด ๆ
ฉันต้องการทำสิ่งนี้:
$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end
$ cat test
My name is John
ความคิดใด ๆ
คำตอบ:
cat <<EOF > test
My name is $NAME
EOF
หรือแม้กระทั่ง
cat <<==end > test
My name is $NAME
==end
ทำงานให้ฉัน
ดูเหมือนว่าเมื่อคุณใช้เวลา==end
ใน'
ตัวแปรไม่ได้แทน
อานี่อยู่ในman page (ดู 3.6.6):
รูปแบบของเอกสารที่นี่คือ:
<<[-]word here-document delimiter
ไม่มีการขยายตัวพารามิเตอร์แทนคำสั่งขยายตัวทางคณิตศาสตร์หรือการขยายตัวของพา ธ ที่จะดำเนินการในคำ หากอักขระใด ๆ ในคำถูกยกมา ตัวคั่นเป็นผลมาจากการลบคำพูดในคำและบรรทัดในที่นี่เอกสารจะไม่ขยาย หากคำไม่ได้อยู่ในเครื่องหมายคำพูดบรรทัดทั้งหมดของ here-document จะอยู่ภายใต้การขยายพารามิเตอร์การทดแทนคำสั่งและการขยายเลขคณิต [ ... ]
cat << "==end" > test
) แต่การเสนอราคายากป้องกันการแทนที่ได้