ดังที่คนอื่น ๆ ส่วนใหญ่ได้สังเกตว่า "-n" จะถูกตีความอย่างแท้จริงหากวางไว้ที่ใดก็ได้ แต่ทันทีหลังจากechoคำสั่ง
ในอดีตยูทิลิตี้ UNIX ทุกคนเป็นแบบนี้ - พวกเขามองหาตัวเลือกเฉพาะหลังชื่อคำสั่งเท่านั้น เป็นไปได้ว่า BSD หรือ GNU ซึ่งเป็นผู้บุกเบิกรูปแบบที่ยืดหยุ่นมากขึ้น (แม้ว่าฉันจะผิดพลาด) เนื่องจากPOSIX ยังระบุวิธีเก่า ๆ ที่ถูกต้อง (ดู Guideline 9 และman 3 getoptบนระบบ Linux) อย่างไรก็ตามแม้ว่ายูทิลิตี้ส่วนใหญ่ในสมัยนี้จะใช้รูปแบบใหม่ แต่ก็มีบางสิ่งที่ค้างไว้เช่นechoกัน
Echoเป็นระเบียบมาตรฐานที่มีอยู่อย่างน้อยสองรุ่นที่ขัดแย้งกันพื้นฐานในการเล่นตามเวลา POSIX มาเป็น ในอีกด้านหนึ่งคุณมีสไตล์ SYSV ซึ่งตีความอักขระที่หลบหลีกแบ็กสแลช อีกด้านหนึ่งคุณมีสไตล์ BSD ซึ่งถือว่า-nเป็นกรณีพิเศษและให้ผลลัพธ์ทุกอย่างอย่างแท้จริง และเนื่องจากechoสะดวกมากคุณมีเชลล์สคริปต์นับพันที่ขึ้นอยู่กับพฤติกรรมหนึ่งหรืออย่างอื่น:
echo Usage: my_awesome_script '[-a]' '[-b]' '[-c]' '[-n]'
echo -a does a thing.
echo -b does something else.
echo -c makes sure -a works right.
echo -- DON\'T USE -n -- it\'s not finished! --
เนื่องจากความหมาย "จัดการทุกสิ่งอย่างแท้จริง" จึงไม่สามารถแม้แต่จะเพิ่มตัวเลือกใหม่ให้echoโดยไม่ทำลายสิ่งใด ๆ หาก GNU ใช้รูปแบบตัวเลือกที่ยืดหยุ่นในนั้นนรกจะแตกหัก
อนึ่งสำหรับการทำงานร่วมกันที่ดีที่สุดระหว่างบอร์นการใช้งานที่เปลือกใช้printfechoมากกว่า
อัปเดตเพื่ออธิบายว่าทำไมechoโดยเฉพาะไม่ใช้ตัวเลือกที่ยืดหยุ่น
echo -n "bar"ให้ "bar" ในขณะที่echo "bar" -nให้ "bar -n"