ฉันยังใหม่กับ Shell Scripting และฉันต้องการสร้างไฟล์ใหม่ภายในสคริปต์และต้องการเพิ่มเนื้อหาแล้วปิดมัน ไม่ควรนำอาร์กิวเมนต์จากผู้ใช้ ทุกอย่างจากเส้นทางและเนื้อหาถูกกำหนดไว้ล่วงหน้า ฉันจะทำมันได้อย่างไร
ฉันยังใหม่กับ Shell Scripting และฉันต้องการสร้างไฟล์ใหม่ภายในสคริปต์และต้องการเพิ่มเนื้อหาแล้วปิดมัน ไม่ควรนำอาร์กิวเมนต์จากผู้ใช้ ทุกอย่างจากเส้นทางและเนื้อหาถูกกำหนดไว้ล่วงหน้า ฉันจะทำมันได้อย่างไร
คำตอบ:
เพียงใช้การเปลี่ยนเส้นทางเอาต์พุต เช่น
#!/bin/bash
echo "some file content" > /path/to/outputfile
>
จะเขียนทั้งหมดstdin
ให้โดยstdout
การecho
ไปยังไฟล์outputfile
ที่นี่
หรือคุณสามารถใช้tee
และเป็นไพพ์สำหรับสิ่งนี้ เช่น
echo "some file content" | tee outputfile
โปรดทราบว่าตัวอย่างใด ๆ outputfile
จะเขียนทับที่มีอยู่
หากคุณจำเป็นต้องผนวกกับไฟล์ที่มีอยู่ในปัจจุบันใช้>>
แทนหรือ>
tee -a
หากคุณไม่ยอมรับอินพุตของผู้ใช้ในบรรทัดนี้ไม่มีอินพุตของผู้ใช้ที่สามารถเปลี่ยนพฤติกรรมที่นี่
ฉันคิดว่ามันดีกว่าที่จะใช้doc ที่นี่เพื่อสร้างไฟล์ใหม่ในสคริปต์ มันดูสะอาดกว่าซึ่งฉันเชื่อว่าสนับสนุนการอ่าน
ตัวอย่างเช่น:
cat > filename <<- "EOF"
file contents
more contents
EOF
"-"
ใน<<-
เป็นตัวเลือกที่ช่วยให้การเยื้องแท็บซึ่งจะถูกปล้นเมื่อแฟ้มถูกสร้างขึ้น คำพูดรอบ ๆ"EOF"
ป้องกัน "here doc" ไม่ให้ทำการทดแทนใด ๆ