จะส่งตัวแปรไปยัง HEREDOC ได้อย่างไรในการทุบตี?


คำตอบ:


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

หรือแม้กระทั่ง

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

ทำงานให้ฉัน

ดูเหมือนว่าเมื่อคุณใช้เวลา==endใน'ตัวแปรไม่ได้แทน

อานี่อยู่ในman page (ดู 3.6.6):

รูปแบบของเอกสารที่นี่คือ:

      <<[-]word
              here-document
      delimiter

ไม่มีการขยายตัวพารามิเตอร์แทนคำสั่งขยายตัวทางคณิตศาสตร์หรือการขยายตัวของพา ธ ที่จะดำเนินการในคำ หากอักขระใด ๆ ในคำถูกยกมา ตัวคั่นเป็นผลมาจากการลบคำพูดในคำและบรรทัดในที่นี่เอกสารจะไม่ขยาย หากคำไม่ได้อยู่ในเครื่องหมายคำพูดบรรทัดทั้งหมดของ here-document จะอยู่ภายใต้การขยายพารามิเตอร์การทดแทนคำสั่งและการขยายเลขคณิต [ ... ]


นอกจากนี้คุณยังสามารถใช้เครื่องหมายคำพูดคู่ ( cat << "==end" > test) แต่การเสนอราคายากป้องกันการแทนที่ได้
Mat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.