ใช้คิวจาก 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
และอื่น ๆ อีกมากมาย