shell 自定义的变量,计算后如何永久保存

2018-02-19 11:39:14 +08:00
 KeepingNow
#设置一个变量
number=0
#计算+1
let number++;
#此时变量 number 等于 1

我想实现的是:当我 再次 运行此脚本后,number 是从 1 开始计算的

给个关键词也行,当然如果给出具体的大概的实现过程更好了

我没搜到,网上是一些永久存储 环境变量 的例子

提前谢谢!

4988 次点击
所在节点    Linux
16 条回复
AEANWspPmj3FUhDc
2018-02-19 11:40:41 +08:00
输出到 文本?
下次执行再读取这个文本?
KeepingNow
2018-02-19 11:43:53 +08:00
@ivlioioilvi 哦,好想法,我没想到,我先记下,如果没有其他更好的我就用这个。我更希望在该脚本内实现,这样就不用再多一个文件了
ik
2018-02-19 12:05:50 +08:00
@KeepingNow 文件前加 . 眼不见心不烦😌
hsuan
2018-02-19 12:32:37 +08:00
环境变量
aice114
2018-02-19 12:55:26 +08:00
把 number 加脚本名后面呗,运行的时候读取,运行完了重新保存一下就是了
rrfeng
2018-02-19 12:57:21 +08:00
环境变量也并不能。只能借助外部资源。
KeepingNow
2018-02-19 13:16:17 +08:00
@aice114 嗯,我想了想还是调用外部文件吧。
KeepingNow
2018-02-19 13:17:30 +08:00
@ik 嗯😊
omph
2018-02-19 13:52:31 +08:00
改自己
```
number=5
let number++
cd "$(dirname "$0")"
awk '/^number=[0-9]/{gsub("[0-9]+",num)} {print >file}' num=$number file="$0" "$0"
```
msg7086
2018-02-19 15:22:56 +08:00
主要原因是程序退出以后环境变量就会被销毁了。
所以只能保存到外部存储中,简单点就是文件,复杂点可以读写 redis 等数据库。
KeepingNow
2018-02-19 19:51:04 +08:00
@omph 非常感谢!已发送十枚 V2EX 铜币作为感谢,请查收。
KeepingNow
2018-02-19 19:51:46 +08:00
@msg7086 谢谢,这是一个新思路。
pkookp8
2018-02-20 02:49:37 +08:00
给个思路
先判断存不存在,不存在付初值并 source 到环境变量,存在直接拿来用
pkookp8
2018-02-20 02:52:06 +08:00
@pkookp8 没注意不能用环境变量,那就读写文件吧,格式用 key=val 的话,加载的时候 source 一下就行,也很方便
assrt
2018-02-20 04:43:14 +08:00
9 楼的方法保险一点可以用注释来做锚点,只匹配语句的话要非常注意写正则
比如
```
number=5 #SAVE_NUMBER
let number++
sed -i "0,/.*#SAVE_NUMBER/s/.*#SAVE_NUMBER/number=$number #SAVE_NUMBER/" $0
```
macOS 请用 gsed
KeepingNow
2018-02-20 09:01:21 +08:00
@assrt 感谢,已发送十枚 V2EX 铜币作为感谢,请查收,sed,新思路。我觉得需要花点时间学学 AWK 和 SED 了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/431213

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX