Почему в bash не отображается переменная внутри echo при запуске из-под Cron?

Есть скрипт

#!/bin/bash 

RESULT=$(/usr/local/bin/wp core verify-checksums --allow-root --path=/var/www/web/)
IS_OK=${RESULT:0:7}

if [ "$IS_OK" == "Success" ]; then
    echo "No problem found. Have a nice day!"
else
        echo "Problem is: >>> $RESULT <<<"

     fi


При запуске вручную в $RESULT подставляется ответ из
/usr/local/bin/wp core verify-checksums --allow-root --path=/var/www/web/


При запуске через Cron в $RESULT всегда пусто. Почему?
  • Вопрос задан
  • 101 просмотр
Решения вопроса 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
При запуске через Cron всегда в $RESULT пусто.
Почему?

Скорее всего потому что не удаётся запустить /usr/local/bin/wp. Для разнообразия можно сделать так:
RESULT=$(/usr/local/bin/wp core verify-checksums --allow-root --path=/var/www/web/ 2>&1 )

чтобы посмотреть на полный вывод команды.
А кроме того, команды обычно устанавливают статус выхода в зависимости от успеха/неуспеха. Его можно достать из $?. И если /usr/local/bin/wp всё делает правильно, то часть с IS_OK можно переписать так:
IS_OK=$?
if [ $IS_OK == 0 ]; then
Ответ написан
Комментировать
@dronmaxman
VoIP Administrator
$RESULT переменная живет в рамках сессии root которую запускает cron, после выполнения удаляется. Попробуй-те запустить TMUX, присвой переменную TEST=1, потом создайте новое окно CTRL+b,c и проверьте переменную echo $TEST - нифига не будет.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы