cronjob이 스크립트를 실행할 때마다 명령 출력으로 쉘 스크립트의 변수 값을 변경하는 방법은 무엇입니까?

cronjob이 스크립트를 실행할 때마다 명령 출력으로 쉘 스크립트의 변수 값을 변경하는 방법은 무엇입니까?

get 명령을 실행하는 스크립트가 있고 호출된 변수에 출력을 저장하고 newvalue호출된 변수가 하나 더 있습니다 oldvalue(수동으로 일부 값을 저장함). 그런 다음 스크립트는 newvalue - oldvalue결과를 빼서 echo라는 변수 finalvalue와 최종 값에 저장합니다. 4시간마다 cron 작업을 사용하여 이 스크립트를 실행하고 에코가 포함된 이메일을 보내야 합니다 finalvalue. 여기까지 모든 것이 잘 작동합니다. 이제 이 스크립트가 이메일 전송이 완료되면 oldvalue값으로 변수를 업데이트하기를 원합니다 . 스크립트가 실행될 때 4시간마다 last 로 newvalue변수 값을 변경해야 함을 의미합니다 . 해결 방법을 제안해 주세요.oldvaluenewvalue

답변1

스크립트를 실행하면 명령줄에서 실행하든 명령줄에서 직접 실행하든 관계없이 cron해당 스크립트는 자체 환경의 자체 "하위 쉘"에서 실행됩니다. 스크립트 실행 중에 설정된 모든 변수는 다음 사용자에게만 표시됩니다.저것실행되는 동안 스크립트. 그런 다음 동일한 스크립트를 다시 실행하면 첫 번째 실행과 완전히 독립적이며 첫 번째 실행의 변수가 어떻게든 유지되고 두 번째 별도 실행에서 선택될 수 있는 방법이 없습니다.

따라서 스크립트의 여러 인스턴스에서 값을 유지해야 하는 경우 임시 파일을 사용하여 값을 저장해야 합니다. 스크립트에 다음과 같은 내용을 추가하면 됩니다.

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

관련 정보