echo
เป็นตัวเชลล์ใน Bash และ Dash ( /bin/sh
) หากคุณเรียกใช้echo
จากบรรทัดคำสั่งคุณกำลังใช้ Bash builtin หากคุณใช้งานเชลล์สคริปต์ด้วยขณะที่sh
คุณกำลังใช้ Dash builtin
รุ่น dash ของecho
ไม่รู้-e
ตัวเลือก แต่เพียงแค่เอาท์พุทคำต่อคำใด ๆ โดยไม่ต้องจัดการพิเศษสำหรับ\
ลำดับ
ใช้ Bash เพื่อรันเชลล์สคริปต์ของคุณหรือใช้/bin/echo
แทนecho
:
/bin/echo -e "\e[1;31mThis is red text\e[0m"
เพื่อหลีกเลี่ยงปัญหาเกี่ยวกับเวอร์ชั่นต่าง ๆ ที่echo
คุณอาจต้องการใช้printf
แทน ตรงกันข้ามกับecho
printf
การตีความ\
ลำดับเสมอแต่ไม่ได้เพิ่ม linefeed อัตโนมัติในตอนท้ายดังนั้นคุณต้องผนวก\n
ท้ายถ้าคุณต้องการ
เนื่องจากบางรุ่นprintf
ไม่เข้าใจ\e
คุณควรใช้\033
แทน:
printf "\033[1;31mThis is red text\033[0m\n"
/bin/echo
ด้วยเส้นประ (/bin/sh
) และทุบตี;echo
ด้วย bash หรือ./tes.sh
ทั้งสองทำงานอย่างถูกต้อง รหัสด้านล่างใช้ได้กับbash
เท่านั้น ถ้า [$ UID -ne 0]; จากนั้น echo "ไม่ใช่ผู้ใช้รูท" และ echo "ผู้ใช้รูท" fi