SORU
8 ŞUBAT 2011, Salı


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
8 ŞUBAT 2011, Salı


İ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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jose LviS el Bambino ( JLB )   LviSito

    Jose LviS el

    3 ŞUBAT 2008
  • 99being99

    99being99

    2 EYLÜL 2008
  • bcbauer

    bcbauer

    7 ŞUBAT 2007