У меня есть скрипт, запускающий команду get и сохраняющий вывод в переменной с именем newvalue
и еще одной переменной с именем oldvalue
(вручную сохраняющий некоторое значение в ней). Затем скрипт вычитает newvalue - oldvalue
и сохраняет результат в переменной с именем finalvalue
и окончательное значение echo. Мне нужно запускать этот скрипт с помощью задания cron каждые 4 часа и отправлять электронное письмо, содержащее echo из finalvalue
. До сих пор все работало нормально. Теперь я хочу, чтобы этот скрипт обновлял oldvalue
переменную со значением newvalue
после того, как он закончит отправку электронного письма. То есть каждые 4 часа при запуске скрипта он должен менять значение переменной oldvalue
с последним newvalue
. Пожалуйста, предложите обходной путь.
решение1
Когда вы запускаете скрипт, независимо от того, запускаете ли вы его из cron
командной строки или напрямую в ней, этот скрипт работает в своей собственной "подоболочке", в своей собственной среде. Любые переменные, заданные во время выполнения скрипта, видны толькочтоскрипт во время его выполнения. Если затем вы снова запустите тот же скрипт, он будет полностью независим от первого запуска, и нет никакой возможности для переменной из первого выполнения каким-либо образом выжить и быть подхваченной вторым, отдельным выполнением.
Поэтому, если вам нужно сохранить значение в разных экземплярах скрипта, вам придется использовать временный файл для его хранения. Просто добавьте что-то вроде этого в свой скрипт:
oldValue=$(cat /path/to/temp/file);
newValue=$(whatever gives you the new value)
finalValue=$((newvalue - oldvalue))
echo "$finalValue" > /path/to/temp/file