San*_*gde 6 command-line bash scripts environment-variables
我想动态生成环境变量名称并将值设置为该变量。我写了一个shell脚本如下。
temp="$(date +%s)"
echo $temp
export ${temp} = "Test value"
echo "Pass variable ${temp}"
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,生成的时间戳应该是键,“测试值”是该键的值。此键和值必须导出到会话。
如何使用 shell 脚本实现这一点?
您可以使用printf -v
动态创建变量,例如:
temp=somename
echo $temp
printf -v $temp "Test value"
echo $somename
Run Code Online (Sandbox Code Playgroud)
这将输出“测试值”。
请注意,这temp="$(date +%s)"
不起作用,因为 的输出$(date +%s)
是数字,并且 Bash 中的变量名称不能以数字开头。您必须给它一个非数字前缀,例如:
temp="t$(date +%s)"
Run Code Online (Sandbox Code Playgroud)
要导出变量,您只需执行以下操作:
export $temp
Run Code Online (Sandbox Code Playgroud)
这是一个完整的示例,证明变量确实在环境中导出:
temp=t$(date +%s)
echo $temp
printf -v $temp "Test value"
export $temp
sh -c "echo \$$temp"
Run Code Online (Sandbox Code Playgroud)
输出例如:
t1486060416
Test value
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8824 次 |
最近记录: |