Buradaki önceki yanıtların geç bir sonucu olarak, muhtemelen tüm değişkenlerin değil, bazılarının enterpolasyonu olmasını istediğiniz durumlar ile sonuçlanırsınız . Dolar işareti ve backticks kaçmak için ters eğik çizgiler kullanarak bunu çözebilir; veya statik metni bir değişkene koyabilirsiniz.
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
Demo: https://ideone.com/rMF2XA
Alıntılama mekanizmalarından herhangi birinin - \____HERE
veya "____HERE"
veya '____HERE'
- tüm değişken enterpolasyonunu devre dışı bırakacağını ve buradaki belgeyi gerçek bir metne dönüştüreceğini unutmayın.
Yaygın bir görev, yerel değişkenleri farklı bir kabuk, programlama dili veya uzak ana bilgisayar tarafından değerlendirilmesi gereken komut dosyasıyla birleştirmektir.
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"
:
''
), ancak değil (o sanki üzerinde sınırlayıcı dönüşler genişleme alıntı""
). Bununla birlikte, sezginiz, tek tırnaklı tanımlayıcıya sahip bir heredoc'un tek tırnak içindeymış gibi davrandığı Perl'de doğrudur, biri çift tırnaklı gibi çift tırnaklı bir tanıtıcıya ve backticks'te olduğu gibi geri işaretli tanımlayıcıya sahip ! Bkz: perlop: << EOF