KSH中的动态环境变量

时间:2020-02-26 13:44:37

标签: linux shell ksh

我必须在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中实现动态变量的任何线索吗?

1 个答案:

答案 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产生任何影响。