การสร้างไฟล์ที่มีเนื้อหาบางส่วนใน Shell scripting


20

ฉันยังใหม่กับ Shell Scripting และฉันต้องการสร้างไฟล์ใหม่ภายในสคริปต์และต้องการเพิ่มเนื้อหาแล้วปิดมัน ไม่ควรนำอาร์กิวเมนต์จากผู้ใช้ ทุกอย่างจากเส้นทางและเนื้อหาถูกกำหนดไว้ล่วงหน้า ฉันจะทำมันได้อย่างไร

คำตอบ:


24

เพียงใช้การเปลี่ยนเส้นทางเอาต์พุต เช่น

#!/bin/bash

echo "some file content" > /path/to/outputfile

>จะเขียนทั้งหมดstdinให้โดยstdoutการechoไปยังไฟล์outputfileที่นี่

หรือคุณสามารถใช้teeและเป็นไพพ์สำหรับสิ่งนี้ เช่น

echo "some file content" | tee outputfile

โปรดทราบว่าตัวอย่างใด ๆ outputfileจะเขียนทับที่มีอยู่

หากคุณจำเป็นต้องผนวกกับไฟล์ที่มีอยู่ในปัจจุบันใช้>>แทนหรือ>tee -a

หากคุณไม่ยอมรับอินพุตของผู้ใช้ในบรรทัดนี้ไม่มีอินพุตของผู้ใช้ที่สามารถเปลี่ยนพฤติกรรมที่นี่


สำหรับผู้ที่ต้องการมีตัวแบ่งบรรทัดภายในไฟล์ของพวกเขาดูที่นี่: stackoverflow.com/a/9741470/10512595
BelovedFool

18

ฉันคิดว่ามันดีกว่าที่จะใช้doc ที่นี่เพื่อสร้างไฟล์ใหม่ในสคริปต์ มันดูสะอาดกว่าซึ่งฉันเชื่อว่าสนับสนุนการอ่าน

ตัวอย่างเช่น:

cat > filename <<- "EOF"
file contents
more contents
EOF

"-"ใน<<-เป็นตัวเลือกที่ช่วยให้การเยื้องแท็บซึ่งจะถูกปล้นเมื่อแฟ้มถูกสร้างขึ้น คำพูดรอบ ๆ"EOF"ป้องกัน "here doc" ไม่ให้ทำการทดแทนใด ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.