加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash-在运行之间存储变量的更好方法?

发布时间:2020-12-15 19:02:47 所属栏目:安全 来源:网络整理
导读:我制作了一个bash脚本,我每小时用crontab运行一次,我需要存储一个变量,以便下次运行时可以访问它.该脚本每次运行时都会更改变量,因此我无法对其进行硬编码.现在我将其写入txt文件,然后将其读回.有没有比这更好的方法呢?我正在阅读txt文件的方式是我在这里找
我制作了一个bash脚本,我每小时用crontab运行一次,我需要存储一个变量,以便下次运行时可以访问它.该脚本每次运行时都会更改变量,因此我无法对其进行硬编码.现在我将其写入txt文件,然后将其读回.有没有比这更好的方法呢?我正在阅读txt文件的方式是我在这里找到的,我不明白它,它有点笨重.是否没有内置命令?无论如何,这是适用的代码,更改了一些变量以使其更易于阅读.
while read x; do
  var=$x
done < var.txt

# Do some stuff,change var to a new value

echo $var > var.txt

该变量只是一个整数,因此文本文件感觉有点过分.

没有必要使用var; x将在当前shell的范围内.交替,
read var < var.txt
# do stuff with var
echo $var > var.txt

我建议使用简单的文本文件来存储变量.但是,自修改脚本存在(非常可疑)选项.仅供娱乐使用!

#!/bin/bash

read val < <( tail -n 1 "$0" )

(( val++ ))
echo "$val"

tmp=$(mktemp /tmp/XXXXXXX)
sed '$s/.*/'$val'/' "$0" > "$tmp"
mv "$tmp" "$0"

exit
0

关键是让倒数第二行成为退出命令,所以不会执行任何操作.最后一行是您要保留的变量值.当脚本运行时,它从它自己的最后一行读取.在退出之前,它使用sed将自身的副本写入临时文件,最后一行使用持久值的当前值进行修改.然后我们用temp文件覆盖当前脚本(假设我们有权这样做).

不过实话说?不要这样做.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读