如何动态生成环境变量名并导出

如何动态生成环境变量名并导出

我想动态生成环境变量名称并将值设置为该变量。我编写了一个如下所示的 shell 脚本。

temp="$(date +%s)"
echo $temp
export ${temp} = "Test value"
echo "Pass variable ${temp}"

在上面的代码中,生成的时间戳应该是键,而“测试值”是该键的值。此键和值必须导出到会话中。

我如何使用 shell 脚本实现这一点?

答案1

您可以使用printf -v动态创建变量,例如:

temp=somename
echo $temp
printf -v $temp "Test value"
echo $somename

这将输出“测试值”。

请注意,这temp="$(date +%s)"不起作用,因为的输出$(date +%s)是数字,而 Bash 中的变量名不能以数字开头。您必须为其提供非数字前缀,例如:

temp="t$(date +%s)"

要导出变量,您只需执行以下操作:

export $temp

这是一个完整的例子,证明变量确实在环境中被导出:

temp=t$(date +%s)
echo $temp
printf -v $temp "Test value"
export $temp
sh -c "echo \$$temp"

输出例如:

t1486060416
Test value

相关内容