ใช้คิวจาก Autotools: การติดตัวหารร่วมที่ต่ำสุดของบอร์นและ POSIX เชลล์ - อาจจะเติมโดยsed- ถ้าคุณต้องเขียนอะไรบางอย่างที่จะต้องทำงานได้ทุกที่ อาจมีระบบที่มีบางสิ่งผิดปกติ แต่คุณสามารถแก้ไขปัญหาดังกล่าวได้ด้วยการเขียนใหม่
ตัวอย่างเช่นระบบโบราณบางอย่างมีปัญหาเกี่ยวกับข้อผิดพลาดในการขยายtestหรือที่รู้จัก[:
if [ $foo = bar ] ; then...
ดังนั้นการฝึก Autoconf คือการเขียนมันซ้ำในเครื่องหมายคำพูดคู่ด้วยคำนำหน้าอักขระเดียวเช่น:
if [ x"$foo" = "xbar" ] ; then...
คุณสามารถใช้"x$foo"ที่นี่ได้ สิ่งนี้ป้องกันความเป็นไปได้ที่$fooอาจเป็นตัวเลือกที่ถูกต้องtest(1)และเนื่องจาก[เป็นนามแฝงสำหรับtestมันจึงอาจตีความการแสดงออกที่ผิด การแก้ปัญหาคือการตั้งค่าสถานการณ์ที่โต้แย้งไม่รู้จัก[มักจะเริ่มต้นด้วยซึ่งหมายความว่ามันไม่สามารถมีความหมายพิเศษเพื่อx[
(Autoconf แนะนำให้ใช้testแทน[แต่คำแนะนำนั้นเป็นปฏิกิริยาต่อความขัดแย้งที่อาจเกิดขึ้นกับM4ซึ่งใช้[ในไวยากรณ์ของมันด้วย)
awk เป็น POSIXดังนั้นในทางทฤษฎีมันสามารถใช้ได้ทุกที่ มันยังอยู่ใน Busyboxดังนั้นคุณจะมีawkการนำไปใช้แม้ในระบบ Linux ที่ฝังอยู่อย่างเข้มงวด ยังคงฉันต้องการจะประหลาดใจไม่น้อยที่จะเจอระบบได้โดยไม่ต้องกว่าawk sedฉันคิดว่ามันมีความซับซ้อน: เครื่องมือที่ง่ายกว่ามีแนวโน้มที่จะอยู่รอดในการทดลองที่รุนแรง
Perl ไม่ได้เป็นส่วนหนึ่งของมาตรฐานที่แพร่หลาย POSIX หรืออย่างอื่นดังนั้นคุณจึงไม่สามารถนับได้หากคุณไม่ทราบล่วงหน้าเกี่ยวกับสภาพแวดล้อมเป้าหมาย Perl ไม่ได้ติดตั้งโดยค่าเริ่มต้นใน:
- Cygwin
- FreeBSD และ NetBSD
- "น้อยที่สุด" ติดตั้งสำหรับ Linuxes บางตัวรวมถึง Slackware
- ลินุกซ์ในตัวหลายตัวที่ใช้งาน Busybox เป็นหลักสำหรับ userland
คู่มือ Autoconf มีบทเกี่ยวกับการเขียนโปรแกรมเชลล์แบบพกพาซึ่งจะเป็นประโยชน์กับคุณ เครื่องมือที่ใช้ในส่วนสุดท้ายครอบคลุมชอบsed, awkและอื่น ๆ อีกมากมาย