Есть скрипт, условно выглядящий так:
#!/bin/bash
x=$(/usr/local/bin/jq ".x" /home/data.txt)
y=$(/usr/local/bin/jq ".y" /home/data.txt)
z=$(/usr/local/bin/jq ".z" /home/data.txt)
a=$(/usr/local/bin/jq ".a" /home/data.txt)
b=$(echo "scale=3; (${a} + ${y}) / ${x} * 100" | bc)
echo "x ${x}" > /var/log/_values.txt
echo "y ${y}" >> /var/log/_values.txt
echo "z ${z}" >> /var/log/_values.txt
echo "a ${a}" >> /var/log/_values.txt
echo "b 0${b}" >> /var/log/_values.txt
При запуске через /bin/bash, все отрабатывает корректно, и в файл уходят действительные значения
x 35645
y 225
z 35413
a 7
b 0.600
Однако задача, выполняемая посредством cron, отдает данные в таком формате
x
y
z
a
b 0
И я не могу осознать, чего cron не хватает. Вроде как-то подобную проблему решал посредством добавления какой-то переменной среды в скрипт. Но не могу вспомнить наверняка.
*/5 * * * * /bin/bash /root/scripts/script.sh