问题描述
我想编写一个运行时回显数字的shell脚本
第一次./x 1
第二次./x 2
第三次./x 3
重启机器后
./ x 4
解决方法
一种方法是将最后一次运行保存到文件中,在这种情况下,将.persist
文件保存在主目录中:
# Go into home directory to persist data.
cd "${HOME}"
# Get persisted data,make zero if empty/non-numeric/restart.
lastNum="$(cat .persist.dat 2> /dev/null)"
[[ -z "${lastNum}" ]] && lastNum=0
[[ "${lastNum}" =~ ^[1-9][0-9]*$ ]] || lastNum=0
[[ "$1" = "--restart" ]] && lastNum=0
# Add one,write to persistent file,and echo.
((lastNum += 1))
echo ${lastNum} > .persist.dat
echo ${lastNum}
如您所见,输出是一个递增的值:
pax:~> ./x
1
pax:~> ./x
2
pax:~> ./x
3
pax:~> ./x
4
pax:~> ./x
5
pax:~> ./x --restart
1
只要您不删除.persist
文件(或对其进行修改,使其包含无效的整数),即使在重新启动后,该文件也应如实地工作。您会注意到我还添加了一个--restart
标志,因此可以根据需要重新启动序列。