【发布时间】:2014-11-07 23:35:24
【问题描述】:
我需要做这样的事情
- 使用默认值设置 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
但它仍然提供与第一次运行相同的输出。
【问题讨论】:
-
将它们写入文件并从文件中读取
-
“每小时”位令人费解(或将成为困难的部分)。您是否正在考虑从
cron运行脚本,或者它应该在您当前的交互式(登录)shell 中运行?您可以将变量设置存储在一个文件中,并使用点.(或source)命令读取该文件。您可以运行其他一些脚本来修改文件中的内容。您可以有一个每小时运行一次的 cron 作业来更新文件。并且每次运行需要环境变量的程序(脚本)时,都可以让脚本读取该文件。 -
envdir 方法很好——有一个专用目录,每个变量一个文件。从这样的目录 (
for f in *; do printf -v "$f" %s "$(<"$f")"; done) 轻松填充您的环境,易于修改,易于保存。 -
export仅导出到您自己的子进程。命名空间并不比这更全局,或更持久。
标签: bash shell unix environment-variables