Değişkenleri bas içinde HEREDOC'a nasıl aktarabilirim?


16

Böyle bir şey yapmak istiyorum:

$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end

$ cat test
My name is John

Herhangi bir fikir?

Yanıtlar:


24
cat <<EOF > test
My name is $NAME
EOF

ya da

cat <<==end > test
My name is $NAME
==end

Benim için çalıştı.

Eğer alırken gibi görünüyor ==endiçinde 'değişken yerine geçmez.

ah, işte adam sayfasında (bak 3.6.6):

Buradaki belgelerin formatı:

      <<[-]word
              here-document
      delimiter

Sözcük üzerinde parametre genişletmesi, komut değiştirme, aritmetik genişletme veya yol adı genişletmesi gerçekleştirilmez . Sözcükteki herhangi bir karakter tırnak içine alınmışsa, ayırıcı sözcük üzerinde tırnak işareti kaldırmanın sonucudur ve bu belgedeki satırlar genişletilmez. Eğer kelime tırnak içine almaktadır, burada-belgenin tüm hatlar parametre genişleme, komut ikamesi ve aritmetik yorumlama tabi tutulur. [...]


Ayrıca çift tırnak işareti ( cat << "==end" > test) kullanabilirsiniz, ancak sert tırnak işareti ikame işlemini gerçekten engeller.
Mat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.