¿Cómo cambiar el valor de una variable en el script de Shell con la salida del comando cada vez que cronjob ejecuta el script?

¿Cómo cambiar el valor de una variable en el script de Shell con la salida del comando cada vez que cronjob ejecuta el script?

Tengo un script que ejecuta un comando get y almaceno la salida en una variable llamada newvaluey una variable más llamada oldvalue(almacené manualmente algún valor en ella). Luego, el script resta newvalue - oldvaluey almacena el resultado en una variable llamada finalvaluey el valor final del eco. Tengo que ejecutar este script usando un trabajo cron cada 4 horas y enviar un correo electrónico que contenga un eco de finalvalue. Hasta aquí todo funciona bien. Ahora quiero que este script actualice la oldvaluevariable con el valor de newvalueuna vez que haya terminado de enviar el correo electrónico. Significa que cada 4 horas cuando se ejecuta el script, debería cambiar el valor de la variable oldvaluecon last newvalue. Por favor sugiera la solución.

Respuesta1

Cuando ejecuta un script, no importa si lo ejecuta desde crono directamente en la línea de comando, ese script se ejecuta en su propia "subshell", en su propio entorno. Cualquier variable establecida durante la ejecución del script solo es visible paraesoscript mientras se ejecuta. Si luego ejecuta el mismo script nuevamente, es completamente independiente de la primera ejecución y no hay forma de que una variable de la primera ejecución sobreviva de alguna manera y sea recogida por la segunda ejecución separada.

Por lo tanto, si necesita mantener un valor en diferentes instancias del script, tendrá que usar un archivo temporal para almacenarlo. Simplemente agregue algo como esto a su script:

oldValue=$(cat /path/to/temp/file);
newValue=$(whatever gives you the new value)
finalValue=$((newvalue - oldvalue))
echo "$finalValue" > /path/to/temp/file

información relacionada