![将变量保存到环境中,直到它不被删除](https://linux22.com/image/211017/%E5%B0%86%E5%8F%98%E9%87%8F%E4%BF%9D%E5%AD%98%E5%88%B0%E7%8E%AF%E5%A2%83%E4%B8%AD%EF%BC%8C%E7%9B%B4%E5%88%B0%E5%AE%83%E4%B8%8D%E8%A2%AB%E5%88%A0%E9%99%A4.png)
我是 bash 脚本新手,所以如果我问任何愚蠢的问题,抱歉 xD
我正在制作一个每天运行 cli 命令的脚本。我从 cli 命令得到的输出是一个 ID,我第二天必须使用该 ID。所以它就像
cli-command-delete $oldid; # here we delete the old id which was generated past day
newid=$(cli-command-create) #here we get the new id.
现在我想保存新标识到旧标识,它将在第二天或下次脚本运行时使用。如何将其保存为环境变量并在创建新 id 后替换该值?如果虚拟机重新启动,该值会被保存吗?我在谷歌上看到使用导出,但我很困惑如何将其保存为其他名称
答案1
“如果虚拟机重新启动,该值是否会被保存”——否。
而是将其写入文件。
id_file=$HOME/.local/data/cli-command.id
# delete the old one
cli-command-delete "$(<"$id_file")"
# save the new one
cli-command-create > "$id_file"
答案2
您必须将其保存到某些永久存储(例如文件)中,并在脚本启动时读取它,最好检查是否可以读取。例如:
#!/usr/bin/env sh
id_path=~/.id
oldid="$(cat $id_path)"
if [ -z "$oldid" ]
then
printf "Failed to read oldid from %s\n" "$id_path" >&2
exit 1
fi
cli-command-delete "$oldid"; # here we delete the old id which was generated past day
cli-command-create > "$id_path"