Bir parti içinde değişkenleri kullanma heredoc
Bash bir heredoc içinde: değişkenleri aktarmaya çalışıyorum
var=$1
sudo tee "/path/to/outfile" > /dev/null << "EOF"
Some text that contains my $var
EOF
Bu beklediğim ($var kelimenin tam anlamıyla, genişletilmiş tedavi edilmez) olarak çalışmıyor.
Dosya oluşturma sudo gerektirir çünkü sudo tee kullanmam lazım. Bir şey yapıyor gibi:
sudo cat > /path/to/outfile <<EOT
my text...
EOT
Çalışmıyor, ^ çünkü . dosyası sudo kullanarak mevcut kabuk, dosya açılır.
Herhangi bir fikir?
CEVAP
İlk sorunuza cevap olarak, tırnak - the bash manual says ayırıcı koyduk çünkü parametre değiştirme yok:
Burada belge biçimi:
<<[-]word here-document delimiter
Hiçbir parametre genişleme, komut ikamesi, aritmetik genişleme ya da yol genişletme gerçekleştirilirkelime. Herhangi bir karakterkelimevardır alıntı,sınırlayıcıword, ve alıntı temizleme sonucudur bu belgede hatları genişletilmiş değildir. Eğerkelimetüm tırnaksız. burada belge satırları parametre genişleme, komut ikamesi, aritmetik ve genişleme tabidir. [...]
Eğer << "EOF"
yerine <<EOF
kullanmak için ilk örnek değiştirirseniz bunun işe yaradığını göreceksiniz.
İkinci örnekte, kabuk cat
ve yönlendirme özgün kullanıcı olarak sudo cat
çıkış için geçerlidir parametre ile sudo
çağırır. Eğer denerseniz işe yarar:
sudo sh -c "cat > /path/to/outfile" <<EOT
my text...
EOT
JavaScript içinde Tek veya Çift Tırnak...
Değişkenleri içinde ve bir sınıf __dış...
Nasıl karşılaştırma/else ifadesi eğer ...
Değişkenleri ya da döngü içinde ve dış...
Django: bir şablon içinde oturum değiş...