7
ฉันจะประสบความสำเร็จในการพกพาได้ด้วย sed -i (การแก้ไขในสถานที่) ได้อย่างไร
ฉันกำลังเขียนเชลล์สคริปต์สำหรับเซิร์ฟเวอร์ของฉันซึ่งเป็นโฮสติ้งที่ใช้ร่วมกันที่ใช้ FreeBSD ฉันยังต้องการที่จะทดสอบพวกเขาในพื้นที่บนพีซีของฉันที่ใช้ Linux ดังนั้นฉันพยายามเขียนแบบพกพา แต่sedฉันไม่เห็นวิธีการทำ ส่วนหนึ่งของเว็บไซต์ของฉันใช้ไฟล์ HTML แบบคงที่ที่สร้างขึ้นและบรรทัด sed นี้แทรก DOCTYPE ที่ถูกต้องหลังจากการสร้างใหม่แต่ละครั้ง: sed -i '1s/^/<!DOCTYPE html> \n/' ${file_name.html} มันทำงานร่วมกับ GNU sedบน Linux แต่ FreeBSD sedคาดว่าอาร์กิวเมนต์แรกหลังจาก-iตัวเลือกที่จะเป็นส่วนขยายสำหรับสำเนาสำรอง นี่คือลักษณะ: sed -i '' '1s/^/<!DOCTYPE html> \n/' ${file_name.html} อย่างไรก็ตาม GNU ในทางกลับกันคาดว่าการแสดงออกที่จะปฏิบัติตามทันทีหลังจากที่sed -i(นอกจากนี้ยังต้องการการแก้ไขด้วยการจัดการบรรทัดใหม่ แต่ได้รับคำตอบแล้วในที่นี้ ) แน่นอนว่าฉันสามารถรวมการเปลี่ยนแปลงนี้ไว้ในสำเนาเซิร์ฟเวอร์ของสคริปต์ แต่นั่นอาจทำให้เกิดความยุ่งเหยิงเช่นการใช้ VCS สำหรับการกำหนดเวอร์ชัน มีวิธีในการบรรลุสิ่งนี้ด้วย sed แบบพกพาอย่างเต็มที่?