Вы ошиблись в цитировании.
Если вы хотите смоделировать поведение echo
, ваша функция должна принять несколько параметров и распечатать их все. В настоящее время он оценивает только первый параметр, поэтому я предлагаю использовать $*
. Вам также необходимо заключить аргумент в двойные кавычки для защиты любых специальных символов:
echo_message() {
echo -e "${lbGREEN}$*${NC}"
}
Специальная переменная $*
распространяется на все аргументы, разделенные пробелами (или, точнее, первым символом $ IFS, который обычно является пробелом). Обратите внимание, что вы почти всегда хотите "$@"
вместо "$*"
, и это один из редких случаев, когда последний также является правильным, хотя и с немного другой семантикой, если для IFS
установлено нестандартное значение.
Теперь функция поддерживает несколько аргументов и печатает их все зеленым цветом, разделенные пробелами. Однако я бы порекомендовал вам также указывать аргумент при вызове функции:
echo_message "$normalMessage"
Хотя пробелы в $normalMessage
теперь будут обрабатываться правильно, другие специальные символы, такие как !
, по-прежнему будут нуждаться в кавычках.