Là một câu trả lời muộn cho các câu trả lời trước đây ở đây, có lẽ bạn sẽ gặp phải tình huống bạn muốn một số nhưng không phải tất cả các biến được nội suy. Bạn có thể giải quyết điều đó bằng cách sử dụng dấu gạch chéo ngược để thoát các ký hiệu đô la và backticks; hoặc bạn có thể đặt văn bản tĩnh trong một biến.
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
Bản trình diễn: https://ideone.com/rMF2XA
Lưu ý rằng bất kỳ cơ chế trích dẫn nào - \____HERE
hoặc "____HERE"
hoặc '____HERE'
- sẽ vô hiệu hóa tất cả phép nội suy biến đổi và biến tài liệu ở đây thành một đoạn văn bản bằng chữ.
Một tác vụ phổ biến là kết hợp các biến cục bộ với tập lệnh cần được đánh giá bởi trình bao, ngôn ngữ lập trình hoặc máy chủ từ xa khác.
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"
:
''
), nhưng không trích dẫn dấu phân cách bật mở rộng (như thể nó ở trong""
). Tuy nhiên, trực giác của bạn là chính xác trong Perl, trong đó một di sản với số nhận dạng trích dẫn đơn hoạt động như thể nó nằm trong dấu ngoặc đơn, một với số nhận dạng được trích dẫn kép như trong dấu ngoặc kép và một với số nhận dạng được đánh dấu ngược như thể trong dấu ngoặc kép ! Xem: perlop: << EOF