echoэто оболочка, встроенная в Bash и dash ( /bin/sh). Если вы запускаете echoиз командной строки, вы используете встроенную Bash, если вы запускаете свой скрипт оболочки, shвы используете встроенную Dash.
Dash-версия echoне знает -eопции, а просто выводит что-то дословно без какой-либо специальной обработки \последовательностей.
Либо используйте Bash для запуска сценария оболочки, либо используйте /bin/echoвместо echo:
/bin/echo -e "\e[1;31mThis is red text\e[0m"
Чтобы избежать проблем с разными версиями, echoвы можете использовать printfвместо этого. В отличие от этого, echoprintfвсегда интерпретирует \последовательности, но не добавляет автоматически перевод строки в конце, поэтому вы должны добавить \nв конце, если хотите.
Поскольку некоторые версии printfне понимают, \eвы должны использовать \033вместо:
Оно работает. /bin/echoс тире ( /bin/sh) и bash; echoс Bash или ./tes.shоба работает правильно. Код ниже работает bashтолько с. if [$ UID -ne 0]; затем echo "Не пользователь root", а echo "Root User" fi
qingfeng
1
Не запускайте его sh test.sh, он печатает текст белым цветом, как вы сказали ... После создания скрипта сделайте его исполняемым, запустив,
sudo chmod +x /path/test.sh
Запустите скрипт с помощью sudo, какsudo ./test.sh или ./test.shоба будут работать.
Я бегу chmod a+x test.sh, он печатает текст в цвете чтения. В чем разница. ./test.shдолжно быть равным sh test.shЧто случилось в Linux?
Цинфэн
вам не приходилось использовать sh при запуске скрипта, вы создали скрипт с интерпретатором bash, #! /bin/bashпоэтому вам нужно его использоватьbash test.sh
Avinash Raj
А также .означает текущий каталог.
Авинаш Радж
Смотрите на скриншот, мой файл test.sh находится внутри рабочего стола. Так что я переместился в эту папку рабочего стола и затем я запустил ./test.sh, наконец, это работает. Пожалуйста, имейте в виду, что запускать скрипт .нужно только в том случае, если он был представлен в текущем каталоге.
Авинаш Радж
1
Для этого нужна правильная команда в правильном формате - все.
Правильное эхо-утверждение: echo "Hello World!"
Правильное эхо-выражение с цветом: echo "\e[1;31mHello World!\e[0m"
Добавление цвета в скрипт bash - одна из тех очень простых, но легко запутывающих вещей. знак равно
Этот сайт может помочь вам все это объяснить. Я часто использую это как ссылку, потому что, кто может помнить все правильные цветовые коды правильно? лол
/bin/echo
с тире (/bin/sh
) и bash;echo
с Bash или./tes.sh
оба работает правильно. Код ниже работаетbash
только с. if [$ UID -ne 0]; затем echo "Не пользователь root", а echo "Root User" fiНе запускайте его
sh test.sh
, он печатает текст белым цветом, как вы сказали ... После создания скрипта сделайте его исполняемым, запустив,Запустите скрипт с помощью
sudo
, какsudo ./test.sh
или./test.sh
оба будут работать.Или
Запуск сценария с
bash
,источник
chmod a+x test.sh
, он печатает текст в цвете чтения. В чем разница../test.sh
должно быть равнымsh test.sh
Что случилось в Linux?#! /bin/bash
поэтому вам нужно его использоватьbash test.sh
.
означает текущий каталог../test.sh
, наконец, это работает. Пожалуйста, имейте в виду, что запускать скрипт.
нужно только в том случае, если он был представлен в текущем каталоге.Для этого нужна правильная команда в правильном формате - все.
Правильное эхо-утверждение:
echo "Hello World!"
Правильное эхо-выражение с цветом:
echo "\e[1;31mHello World!\e[0m"
Добавление цвета в скрипт bash - одна из тех очень простых, но легко запутывающих вещей. знак равно
Этот сайт может помочь вам все это объяснить. Я часто использую это как ссылку, потому что, кто может помнить все правильные цветовые коды правильно? лол
источник