use*_*970 12 environment-variables variable syntax
我使用 Bash 4.3.48(1) 并且.sh
在 shebang 下有一个包含大约 20 个变量的文件。该文件仅包含变量。
这是模式:
x="1"
y="2"
...
Run Code Online (Sandbox Code Playgroud)
我需要以DRY方式导出所有这些变量:例如,一个export
对所有变量,而不是说 20export
对 20 个变量。
在该文件中执行此操作的最优雅方式(最短、最有效)是什么?
一个for
循环?一个array
?也许比这些更简单(某种集合糖语法)?
Kus*_*nda 22
在文件顶部使用set -a
(或等效的set -o allexport
)来启用allexport
shell 选项。然后在文件末尾(在适当的地方)使用set +a
(或set +o allexport
) 来禁用allexport
shell 选项。
使用启用allexport
shell 选项将产生以下效果(来自bash
手册):
创建或修改的每个变量或函数都被赋予导出属性并标记为导出到后续命令的环境。
此壳选项,设置与任一set -a
或set -o allexport
,是在POSIX定义(因此应适用于所有sh
样壳)作为
当此选项打开时,应为执行赋值的每个变量设置导出属性;[...] 如果分配在命令中的实用程序名称之前,则在实用程序完成后导出属性不应保留在当前执行环境中,但特殊内置实用程序之一之前的导出属性会导致导出属性内置完成后持久化。如果赋值不在命令中的实用程序名称之前,或者如果赋值是
getopts
或read
实用程序操作的结果,则导出属性将持续到变量未设置为止。
启用此选项时设置的变量将被导出,即成为环境变量。像往常一样,这些环境变量将可用于当前的 shell 环境和任何随后创建的子进程环境。
这意味着您必须要么
.
,或source
在具有此命令的外壳程序中),或