bash - 如何使用 Unix 变量在 session {bash} 中设置和保留值

标签 bash shell unix environment-variables

<分区>

我需要做这样的事情

  • 设置一个具有默认值的 unix 变量。
  • 运行读取该变量并处理它的 shell 脚本。
  • 处理后,它可能会或可能不会更改该变量的值。

每小时运行一次此脚本,并确保此变量现在的值是上次运行此脚本时设置的值。

我主要是在寻找如何设置和保留值(value)。我做了以下操作,但没有用。

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 脚本都是它自己的进程,你不能以这种方式跨进程持久化变量。有various ways to communicate between processes , 虽然:

  1. 管道
  2. 共享内存
  3. 消息队列
  4. 信号量
  5. 文件

就您的目的而言,文件似乎是最简单的方法。使用 bash,写入文件:

echo $VAR > /tmp/process.tmp.file.txt

并从中读取:

export VAR=`cat /tmp/process.tmp.file.txt`

关于bash - 如何使用 Unix 变量在 session {bash} 中设置和保留值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26811851/

相关文章:

linux 查找多种模式

linux - 无法在ubuntu中执行bash命令: permissions denied

c - 在我的简单 shell 程序中需要帮助处理 "CTRL-C"信号

python - ctime 总是 <= mtime 吗?

linux - 如何在 Bash 中给定超时后杀死子进程?

bash - 在curl中无限期地请求数据

bash - 多个 cronjob 电子邮件

bash - 如何在 CURL shell 脚本中捕获超时/错误?

python - 无法从 .bash_profile 中删除环境变量

unix - 如何使用 awk 列出特定行?