Tengo un script que ejecuta un comando get y almaceno la salida en una variable llamada newvalue
y una variable más llamada oldvalue
(almacené manualmente algún valor en ella). Luego, el script resta newvalue - oldvalue
y almacena el resultado en una variable llamada finalvalue
y 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 oldvalue
variable con el valor de newvalue
una 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 oldvalue
con last newvalue
. Por favor sugiera la solución.
Respuesta1
Cuando ejecuta un script, no importa si lo ejecuta desde cron
o 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