get 명령을 실행하고 출력을 변수 newvalue
및 변수 에 저장하는 스크립트가 있습니다 oldvalue
(수동으로 일부 값을 저장함). 그런 다음 스크립트를 사용하여 빼기를 수행 newvalue - oldvalue
하고 결과를 finalvalue
echo라는 변수와 최종 값에 저장합니다. 4시간마다 cron 작업을 사용하여 이 스크립트를 실행하고 에코가 포함된 이메일을 보내야 합니다 finalvalue
. 여기까지는 모든 것이 잘 작동하고 있습니다. 이제 이 스크립트가 이메일 전송을 마친 후 oldvalue
변수를 값으로 업데이트하기를 원합니다. 즉, 스크립트가 실행되는 동안 4시간마다 newvalue
last를 사용하여 변수 값을 변경해야 합니다. 해결책을 제안해주세요.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