簡體   English   中英

Bash 腳本中的變量,保持上次運行時的值

[英]Variable in Bash Script that keeps it value from the last time running

我可以創建具有持久變量值的 Bash 腳本嗎?

例如,當腳本第一次運行時(在特定的時間限制內),我用 0 初始化一個變量,並且每次腳本運行時變量都會自動增加。

你不能,但你可以使用文件來做到這一點

#!/bin/bash

valuefile="/tmp/value.dat"

# if we don't have a file, start at zero
if [ ! -f "$valuefile" ]; then
    value=0

# otherwise read the value from the file
else
    value=$(cat "$valuefile")
fi

# increment the value
value=$((value + 1))

# show it to the user
echo "value: ${value}"

# and save it for next time
echo "${value}" > "$valuefile"

幾天前我遇到了同樣的問題,我已經編寫了自己的工具來完成這項工作,因為沒有其他方法可以做類似的事情。

gvar是一個純 Bash 鍵值對存儲,每個用戶都有不同的數據集合。 記錄存儲在用戶的主目錄中。

這是源代碼中最有趣的函數:

get_variable() {
  cat $FILE | grep -w $1 | cut -d'=' -f2
}

set_variable() {
  echo $1=$2 >> $FILE
}

remove_variable() {
  sed -i.bak "/^$1=/d" $FILE
}

恐怕您必須將狀態保存在某個文件中。 訣竅是將它放在用戶能夠寫入的地方。

yourscriptvar=0

if [ -e "$HOME/.yourscriptvar" ] ; then
    yourscriptvar=$(cat "$HOME/.yourscriptvar")
fi

# do something in your script

#save it output the file
echo $yourscriptvar > "$HOME/.yourscriptvar"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM