【发布时间】:2015-05-09 04:46:24
【问题描述】:
我正在尝试在 bash 脚本中创建一个环境变量,用户将输入要创建的环境变量的名称并输入其值。
这是一种硬编码方式,只是为了详细说明我的问题:
#!/bin/bash
echo Hello
export varName="nameX" #
echo $varName
export "$varName"="val" #here I am trying to create an environment
#variable whose name is nameX and assigning it value val
echo $nameX
它工作正常 它的输出是:
Hello
nameX
val
但是,我想要一个通用代码。因此,我试图从用户那里获取变量名称及其值的输入,但我遇到了麻烦。我不知道如何回显名称是用户定义的变量
echo "enter the environment variable name"
read varName
echo "enter the value to be assigned to env variable"
read value
export "$varName"=$value
现在,我不知道如何回显环境变量 如果我喜欢这样:
echo "$varName"
它输出用户赋予环境变量的名称,而不是分配给它的值。如何在其中回显值?
谢谢
【问题讨论】:
-
使用间接:
echo "${!varName}". -
另外请记住,变量名中只允许使用某些字符
[a-zA-Z0-9_],但用户可以输入任何内容。 -
它有效:D 谢谢@gniourf_gniourf
-
将过多的权力传递给用户是非常糟糕的。
标签: bash shell indirection