Eu tenho um script executando um comando get e armazeno a saída em uma variável chamada newvalue
e mais uma variável chamada oldvalue
(armazenei manualmente algum valor nela). Em seguida, o script subtrai newvalue - oldvalue
e armazena o resultado em uma variável chamada finalvalue
e ecoa o valor final. Tenho que executar esse script usando cron job a cada 4 horas e enviar e-mail contendo echo of finalvalue
. Até aqui tudo está funcionando bem. Agora quero que este script atualize a oldvalue
variável com o valor newvalue
assim que terminar de enviar o e-mail. Significa que a cada 4 horas quando o script é executado, ele deve alterar o valor da variável oldvalue
com last newvalue
. Por favor, sugira a solução alternativa.
Responder1
Quando você executa um script, não importa se você o executa cron
diretamente na linha de comando, esse script é executado em seu próprio "subshell", em seu próprio ambiente. Quaisquer variáveis definidas durante a execução do script só são visíveis paraquescript enquanto ele é executado. Se você executar o mesmo script novamente, ele será completamente independente da primeira execução e não haverá como uma variável da primeira execução sobreviver de alguma forma e ser captada pela segunda execução separada.
Portanto, se você precisar manter um valor em diferentes instâncias do script, precisará usar um arquivo temporário para armazená-lo. Basta adicionar algo assim ao seu script:
oldValue=$(cat /path/to/temp/file);
newValue=$(whatever gives you the new value)
finalValue=$((newvalue - oldvalue))
echo "$finalValue" > /path/to/temp/file