Greg's Wikiมีโพสต์เกี่ยวกับการปรับ bash script สำหรับ Dashที่ชี้ให้เห็น 'bashisms' มากมาย - คุณสมบัติพิเศษที่ไม่ได้มาตรฐาน แต่เป็นส่วนหนึ่งของ bash การหลีกเลี่ยงการ bashisms เหล่านั้นสามารถช่วยทำให้สคริปต์ของคุณเป็นมิตรกับสภาพแวดล้อมที่แตกต่างกัน นี่เป็นการตอบคำถามของคุณโดยเฉพาะ ตัวอย่างเช่นใช่มีตัวดำเนินการที่แตกต่างกัน (เช่น==
) แต่มีชุด Posix มาตรฐานที่ควรทำงานในทุกสภาพแวดล้อม
สำหรับการอ่านอย่างละเอียดมากขึ้นคุณสามารถตรวจสอบมาตรฐาน Posixซึ่งกระสุนทั้งหมดควรปฏิบัติตาม โดยเฉพาะปริมาณใน "Shell & Utilities"
สิ่งที่ฉันพบความท้าทายมากกว่าความแตกต่างของเชลล์คือความแตกต่างของคำสั่ง ระบบ Linux หลายระบบมี GNU find
แต่ถ้าคุณกำลังเขียนสคริปต์แบบพกพาอย่าพึ่งพาตัวเองman find
เพราะมีระบบจำนวนมากที่มี BSD find
ซึ่งมีชุดคุณสมบัติที่แตกต่างกัน หากคุณกำลังเขียนสคริปต์สำหรับ busybox คุณจะพบว่ามีเวอร์ชันที่แตกต่างกับnc
s ที่แตกต่างกันโดยสิ้นเชิง สิ่งเหล่านี้คือสิ่งต่าง ๆ ที่ทำให้ฉันมักจะใช้เมื่อฉันปรับใช้สคริปต์กับสภาพแวดล้อมที่แตกต่างกัน
สำหรับการอ่านเพิ่มเติมเกี่ยวกับวิธีปฏิบัติในการเขียนสคริปต์เชลล์ที่ดีนอกจากนี้ยังมีแหล่งข้อมูลที่ดีในบล็อกของ David Pashley: การเขียนสคริปต์เชลล์เชลล์ที่แข็งแกร่ง
ตรวจสอบให้แน่ใจว่าคุณอ่านคำตอบและความคิดเห็นของGillesในเว็บไซต์นี้ เขามีเคล็ดลับมากมายเกี่ยวกับการทำให้แน่ใจว่าคุณใช้รหัสพกพา