Como alterar o valor de uma variável no shell script com a saída do comando sempre que o script está sendo executado pelo cronjob?

Como alterar o valor de uma variável no shell script com a saída do comando sempre que o script está sendo executado pelo cronjob?

Eu tenho um script executando um comando get e armazeno a saída em uma variável chamada newvaluee mais uma variável chamada oldvalue(armazenei manualmente algum valor nela). Em seguida, o script subtrai newvalue - oldvaluee armazena o resultado em uma variável chamada finalvaluee 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 oldvaluevariável com o valor newvalueassim 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 oldvaluecom last newvalue. Por favor, sugira a solução alternativa.

Responder1

Quando você executa um script, não importa se você o executa crondiretamente 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

informação relacionada