Bash脚本中的变量,使其保持上次运行时的值

时间:2012-03-28 09:47:24

标签: linux bash variables

我可以使用持久变量值创建Bash脚本吗?

例如,当脚本第一次运行时(在特定时间限制内),我将变量初始化为0,并且每次脚本运行时变量都会自动增加。

3 个答案:

答案 0 :(得分:16)

你不能,但你可以使用文件来做到这一点

#!/bin/sh

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

# otherwise read the value from the file
else
  value=`cat /tmp/value.dat`
fi

# increment the value
value=`expr ${value} + 1`

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

# and save it for next time
echo "${value}" > /tmp/value.dat

答案 1 :(得分:3)

我担心你必须将状态保存在某处的文件中。诀窍是把它放在用户可以写的地方。

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"

答案 2 :(得分:3)

几天前我遇到了同样的问题而且我已经编写了自己的工具来完成工作,因为没有其他方法可以做类似的事情。

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
}