如何使用Unix变量跨会话{bash}设置和保留值
我需要这样做如何使用Unix变量跨会话{bash}设置和保留值,bash,shell,unix,environment-variables,Bash,Shell,Unix,Environment Variables,我需要这样做 使用默认值设置unix变量 运行一个shell脚本,读取该变量并对其进行处理 在处理时,它可能会也可能不会改变该变量的值 每小时运行一次此脚本,并确保此变量的值现在是上次运行此脚本时设置的值 我主要是寻找如何设置和保留价值。我做了以下事情,但没有成功 export last_build="hello" source .bashrc 然后在我处理这个变量的脚本中 echo $last_build export last_build="hello again" echo
- 使用默认值设置unix变量
- 运行一个shell脚本,读取该变量并对其进行处理
- 在处理时,它可能会也可能不会改变该变量的值
export last_build="hello"
source .bashrc
然后在我处理这个变量的脚本中
echo $last_build
export last_build="hello again"
echo $last_build
当我运行这个脚本时,我得到如下结果
hello
hello again
当我第二次运行时,我希望输出是
hello again
hello again
但是它会提供与第一次运行相同的输出。Shell变量存储在每个进程中,因为每个Shell脚本都是它自己的进程,所以不能以这种方式跨进程持久化变量。不过,有:
echo $VAR > /tmp/process.tmp.file.txt
从中读到:
export VAR=`cat /tmp/process.tmp.file.txt`
将它们写入文件并从文件中读取“每小时”这一点令人费解(或将是最难的部分)。您是在考虑从
cron
运行脚本,还是应该在当前的交互式(登录)shell中运行脚本?您可以将变量设置存储在文件中,并使用点
(或源
)命令读取该文件。您可以运行其他脚本来修改文件中的内容。您可以有一个每小时运行一次的cron作业来更新文件。每次运行需要环境变量的程序(脚本)时,都可以让脚本读取该文件。从这样的目录(for f in*;do printf-v“$f”%s“$”(export
仅导出到您自己的子流程)轻松填充您的环境。命名空间不比它更全局或更持久。