问题
可以通过以下命令在KSH中导出变量:
export EXAMPLE1="A"
export EXAMPLE2="B"
export EXAMPLE3="C"
然而,我想echo
用户,变量已经被重新定义:
echo ${!EXAMPLE1@}" -> "$EXAMPLE1
echo ${!EXAMPLE2@}" -> "$EXAMPLE2
echo ${!EXAMPLE3@}" -> "$EXAMPLE3
目的是在一行代码中执行这两个操作,因为我有几个环境变量要分配。
我所做的
为了回答这个问题,我制作了一个define
函数,它结合了两个命令:
define() {
var=$1
val=$2
export var=$val
echo ${!var@}" -> "$var
}
EXAMPLE1="A"
EXAMPLE2="B"
EXAMPLE3="C"
define $EXAMPLE1 "X"
define $EXAMPLE2 "Y"
define $EXAMPLE3 "Z"
但它并没有给出预期的结果。代替接收:
EXAMPLE1 -> X
EXAMPLE2 -> Y
EXAMPLE3 -> Z
,我收到以下输出:
var -> X
var -> Y
var -> Z
,并且环境变量仍然被设置为A
、B
和C
。我的方法似乎指定了局部变量var
,而不是环境变量。
什么能解决我的问题?
不要用$EXAMPLE1
而是用EXAMPLE1
调用函数
我做了更多修改:
define() {
var=$1
val=$2
export $var=$val
echo "${var} -> ${val}"
}
EXAMPLE1="A"
EXAMPLE2="B"
EXAMPLE3="C"
define EXAMPLE1 "X"
define EXAMPLE2 "Y"
define EXAMPLE3 "Z"