ในฐานะที่เป็น corolloary ปลายของคำตอบก่อนหน้านี้ที่นี่คุณอาจท้ายในสถานการณ์ที่คุณต้องการตัวแปรบางอย่างแต่ไม่ทั้งหมดจะถูกแก้ไข คุณสามารถแก้ไขได้โดยใช้แบ็กสแลชเพื่อหลีกเลี่ยงสัญญาณดอลลาร์และ backticks; หรือคุณสามารถใส่ข้อความคงที่ในตัวแปร
Name='Rich Ba$tard'
dough='$$$dollars$$$'
cat <<____HERE
$Name, you can win a lot of $dough this week!
Notice that \`backticks' need escaping if you want
literal text, not `pwd`, just like in variables like
\$HOME (current value: $HOME)
____HERE
การสาธิต: https://ideone.com/rMF2XA
โปรดทราบว่ากลไกการอ้างอิงใด ๆ - \____HERE
หรือ"____HERE"
หรือ'____HERE'
- จะปิดใช้งานการแก้ไขตัวแปรทั้งหมดและเปลี่ยนเอกสารที่นี่เป็นข้อความตัวอักษร
ภารกิจทั่วไปคือการรวมตัวแปรโลคัลกับสคริปต์ซึ่งควรประเมินโดยเชลล์ภาษาการเขียนโปรแกรมหรือรีโมตโฮสต์อื่น
local=$(uname)
ssh -t remote <<:
echo "$local is the value from the host which ran the ssh command"
# Prevent here doc from expanding locally; remote won't see backslash
remote=\$(uname)
# Same here
echo "\$remote is the value from the host we ssh:ed to"
:
''
) แต่ไม่ได้อ้างถึงตัวคั่นจะเปิดการขยายตัว (เช่นถ้าอยู่ใน""
) อย่างไรก็ตามสัญชาตญาณของคุณถูกต้องใน Perl โดยที่ heredoc ที่มีตัวระบุที่เสนอราคาเดียวจะทำงานเหมือนกับว่าอยู่ในเครื่องหมายคำพูดเดี่ยวหนึ่งที่มีตัวระบุคู่ที่ยกมาราวกับว่าในเครื่องหมายคำพูดคู่และหนึ่งที่มีตัวบ่งชี้ย้อนกลับราวกับว่าใน backticks ! ดู: perlop: << EOF