Bash скрипт в crontab ведет себя по-разному - PullRequest
0 голосов
/ 05 ноября 2018

У меня проблемы с поиском причины, по которой мой BASH-скрипт ведет себя по-разному, если он запускается один или внутри cron. У меня есть этот фрагмент:

    #!/bin/bash
    RESPONSE=$(curl -fs -XPOST -H "Content-type: application/json" -d '{"id" : 4}' https://myserver.com)
    echo $RESPONSE

    if [ -z "$RESPONSE" ]; then
        echo "empty response"
        return 0
    fi

    COMMAND=$(echo $RESPONSE | python -c "import sys, json; print json.load(sys.stdin)['command']")
    if [ -z "$COMMAND" ]; then
        echo "empty command"
    elif [ "$COMMAND" = "SYS_INFO" ];
    then
        #business logic
    fi

, который печатает два разных ответа в двух средах:

$RESPONSE Running from console:
{"id":"1f78d8d0-e754-4a23-a2f0-448fbeb42995", "key":"\n4RHDFAnTull1Z+aHGbO1zXcAGghuaEUz0w8sT7dlpc80jG6ZaWnbDox4G0f8sKY\ng0WZ80zWf8ftNgX3nes9MWYEq00nM5jJWCSavmGSKCKjoGD2XqBod8W0Z5w/KAHTSitGVMFgMjda91+xozw8uMlzR/t3Y8FP2k/NHj\n"}

$RESPONSE Running from :
{"id":"1f78d8d0-e754-4a23-a2f0-448fbeb42995", "key":"
4RHDFAnTull1Z+aHGbO1zXcAGghuaEUz0w8sT7dlpc80jG6ZaWnbDox4G0f8sKYj
g0WZ80zWf8ftNgX3nes9MWYEq00nM5jJWCSavmGSKCKjoGD2XqBod8W0Z5w/KAHTSitGVMFgMjda91+xozw8uMlzR/t3Y8FP2k/NHj
"}

Обратите внимание на \n, что сервер возвращается в поле key, которое присутствует при запуске из консоли и НЕ присутствует (на самом деле, они закодированы как новая строка) при запуске из crontab

Что я пробовал:

  1. добавление источника ~ / .bashrc в соответствии с предложением здесь
  2. изменяющееся значение PATH, оценивающее различия двух сред, как предлагается здесь

Однако, похоже, ничего не работает.

...