Вывод задания CRON с использованием echo с "-e", включая "-e" - PullRequest
0 голосов
/ 18 марта 2020

У меня есть работа cron ...

/bin/sh /usr/local/maint/update-wp-sites 2>&1 > /usr/local/maint/output/update-wp-sites.$(date +"\%F_\%H\%M\%S").txt

Отлично работает.

Вот код для update-wp-сайтов:

red='\033[0;31m'
color_off='\033[0m'
echo -e "$red updating wp core $color_off"
wp core update

Но вывод в файле update-wp-sites. $ (date ...), указанном выше, выглядит следующим образом:

-e updating wp core
Success: WordPress is up to date.

Почему появляется "-e"?

1 Ответ

1 голос
/ 18 марта 2020

Используйте printf (что является стандартом Posix) вместо нестандартного echo -e:

red='\033[0;31m'
color_off='\033[0m'
printf "${red}%s${color_off}\n" "updating wp core"
wp core update

То же самое относится к echo -n.

Posix не указывает никаких параметров командной строки для echo, а Posix-совместимый echo просто выводит все свои аргументы дословно, включая те, которые выглядят как параметры командной строки.

общие (но не универсальные) расширения для echo действительно могут помешать: не существует переносимого способа их использования или подавления (например, если вы хотите вывести что-то, начинающееся с -e, например).

Лучше придерживаться printf, который встроен в большинство оболочек, имеет стандартизированное поведение и который легко расширяется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...