【发布时间】:2021-11-15 12:58:11
【问题描述】:
众所周知,通过将多个脚本使用的公共变量存储在一个公共文件中,可以使它们彼此可用。
与通过保存在 RAM 中的变量进行的交换相比,多个脚本之间通过硬盘上的文件交换变量值会导致相应硬盘上的频繁写入操作。
已知方式的软件实现:
# write a var to a file
echo "var_01=Alfa" > var_file.sh
# set a new value to a var
sed -i 's/var_01=Alfa/var_01=Berta/' var_file.sh
# delete the value of a var and the var
sed -i 's/var_01=Alfa/""/' var_file.sh
# make a var readable to a script by Include var_file.sh
source ./var_file.sh
什么是更好的做法,如何使 bash 脚本的变量可用于另一个 bash 脚本?
备注: 搜索的是:
- 一种通过多个 bash 脚本使用 variales 的方法,无需为需要在文件中存储 var 实际值的 vars 提供帮助文件。它可以在 RAM、pe 上进行。通过非变量类型,可能是全局变量或环境变量等。
【问题讨论】:
-
如果其他脚本是当前进程的(直接或间接)子进程,可以将变量放入环境中。
-
@user1934428 尽管使用环境变量有一些限制,例如不支持 Bash 使用的任何类型的数组或变量标志。持久保存这些和所有属性标志的唯一方法是将
declare -p的输出写入文件,然后导入文件以重新加载其声明。 -
@LéaGris :使用其他方式(例如通过文件)也仅支持文本流。如果要传递类型化的数据,则必须使用传输格式(JSON、YAML 或其他)。最后,
declare -p正在生成这样的格式,如果你source之后的文件意味着解析它。