在bash中动态分配变量值

时间:2017-03-23 07:55:42

标签: bash shell

我有以下配置文件:OO_CONF.conf,内容如下:

appPackage_name = sqlncli
appPackage_version = 11.3.6538.0

现在我想在shell脚本中读取这些变量。所以我想要一个变量$ appPackage_name,它应该包含值:sqlncli

我尝试这样做的方式是:

while read line; do
  newline=`echo $line | sed -e 's/ //g'`
  expr "$newline"
done < ./OO_CONF.conf

echo "$appPackage_name"

但它似乎不起作用。

请求帮助。

1 个答案:

答案 0 :(得分:2)

使用带有bash标记的-g内置的declare使其全局可用,

#!/bin/bash

while IFS=' = ' read -r  key value; do
    declare -g $key="$value"
done <OO_CONF.conf

printf "%s %s\n" "${appPackage_name}" "${appPackage_version}"

我的想法是将IFS设置为=,以便分割文件中的行以读取键和值对,然后使用declare我们可以动态创建变量使用以下语法

declare -g <var-name>=<variable-value>