echo
là một shell dựng sẵn trong Bash và dash ( /bin/sh
). Nếu bạn chạy echo
từ dòng lệnh bạn đang sử dụng nội dung Bash, nếu bạn đang chạy tập lệnh shell của mình thì sh
bạn đang sử dụng nội dung Dash.
Phiên bản dash của echo
không biết -e
tùy chọn mà chỉ xuất ra bất cứ điều gì nguyên văn mà không có bất kỳ xử lý đặc biệt nào cho \
chuỗi.
Sử dụng Bash để chạy tập lệnh shell của bạn hoặc sử dụng /bin/echo
thay vì echo
:
/bin/echo -e "\e[1;31mThis is red text\e[0m"
Để tránh các vấn đề với các phiên bản khác nhau của echo
bạn có thể muốn sử dụng printf
thay thế. Ngược lại, echo
printf
luôn luôn diễn giải \
các chuỗi nhưng không tự động thêm một nguồn cấp dữ liệu ở cuối, do đó bạn phải nối thêm \n
vào cuối nếu bạn muốn.
Vì một số phiên bản printf
không hiểu \e
bạn nên sử dụng \033
thay thế:
printf "\033[1;31mThis is red text\033[0m\n"
/bin/echo
với dấu gạch ngang (/bin/sh
) và bash;echo
với bash hoặc./tes.sh
cả hai hoạt động chính xác. Mã dưới đây chỉ hoạt động vớibash
. nếu [$ UID -ne 0]; sau đó lặp lại "Không phải người dùng root" khác echo "Người dùng root" fi