我想动态生成环境变量名称并将值设置为该变量。我编写了一个如下所示的 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