每次 cronjob 執行腳本時,如何使用指令的輸出來變更 shell 腳本中變數的值?

每次 cronjob 執行腳本時,如何使用指令的輸出來變更 shell 腳本中變數的值?

我有一個運行 get 命令的腳本,並將輸出儲存在一個名為 的變數newvalue和一個名為的變數中oldvalue(手動在其中儲存一些值)。然後用腳本進行減法newvalue - oldvalue並將結果儲存在名為finalvalueand echo's Final value 的變數中。我必須每 4 小時使用 cron 作業執行此腳本並發送包含 echo of 的電子郵件finalvalue。到這裡一切都工作正常。現在我希望這個腳本在完成發送電子郵件後oldvalue用值更新變數。意味著腳本運行時每 4 小時,它應該使用 lastnewvalue更改變數的值。請建議解決方法。oldvaluenewvalue

答案1

cron當您執行腳本時,無論是從命令列執行還是直接在命令列中執行,該腳本都會在自己的環境中執行在其自己的「子shell」中。腳本執行期間設定的任何變數僅對腳本運行時。如果您隨後再次運行相同的腳本,則它完全獨立於第一次運行,並且第一次執行中的變數無法以某種方式生存並被第二次單獨的執行所拾取。

因此,如果您需要在腳本的不同實例中保留一個值,則必須使用臨時檔案來儲存它。只需將這樣的內容添加到您的腳本中即可:

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

相關內容