我必须在KSH中编写一个脚本,该脚本定义并使用动态环境变量。
它应该以以下格式读取文件
DEV server_name DEV_Server
QA server_name QA_Server
PROD server_name PROD_Server
因此,如果脚本要在DEV中执行,它将被如下调用:
Invocation Value of server_name
**script.sh DEV** DEV_Server
**script.sh QA** QA_Server
关于如何在KSH中实现动态变量的任何线索吗?
答案 0 :(得分:1)
对于ksh93v或更高版本,您可以使用typeset -n
来使名称引用另一个动态定义的变量:
# recommended syntax for ksh but not bash; in ksh, makes all variables local by default
# does not have that effect in bash, and is best avoided there.
function indirect_assign { nameref _dest=$1; _dest=$2; }
while read -r env_name var_name var_value; do
[[ $env_name = "$1" ]] || continue
indirect_assign "$var_name" "$var_value"
export "$var_name"
done
请注意,此代码需要被获取(或作为函数体调用),以对调用shell产生任何影响。