Mam pracę Cron ...

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

Działa świetnie.

Oto kod strony aktualizacji-WP:

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

Ale wyjście w witrynach aktualizacji-WP. $ (Data ...) Plik określony powyżej wygląda tak:

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

Dlaczego pojawiają się "-e"?

0
Code Prowler 18 marzec 2020, 16:10

1 odpowiedź

Najlepsza odpowiedź

Użyj printf (który jest standardem POSIX) zamiast niestandardowy echo -e:

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

To samo dotyczy echo -n.

Posix nie określa żadnych opcji wiersza polecenia dla echo, a zgodny z POSIX echo po prostu drukuje wszystkie jego argumenty Verbatim, w tym te, które wyglądają jak opcje wiersza poleceń.

Rozszerzenia wspólnych (ale nie uniwersalnych) do echo może naprawdę przeszkadzać: nie ma przenośnego sposobu na ich użycie ani nie tłumić ich (w przypadku, gdybyś chciał wyjść coś począwszy od -e, dla przykład).

Lepiej trzymać się printf, który jest wbudowany w większości skorup, który ma znormalizowane zachowanie, a które jest czysto rozszerzalne.

1
rici 18 marzec 2020, 13:59