echo- оболонка, вбудована в Bash і dash ( /bin/sh). Якщо ви запускаєте echoз командного рядка, ви використовуєте вбудований Bash, якщо ви запускаєте сценарій оболонки разом із shвами, використовуючи вбудований тире.
Версія тире echoне знає цього -eваріанту, але просто виводить що-небудь дослівно без будь-яких спеціальних оброблень для \послідовностей.
Або використовуйте Bash для запуску сценарію оболонки або використовуйте /bin/echoзамість echo:
/bin/echo -e "\e[1;31mThis is red text\e[0m"
Щоб уникнути проблем з різними версіями echo ви можете скористатися ними printf. На відміну від echo printfзавжди інтерпретує \послідовності, але автоматично не додає стрічковий канал в кінці, тому вам доведеться додавати \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 "Not root user" else echo "Root User" fi