2017-03-23 56 views
1

我有以下的配置文件:OO_CONF.conf與以下內容:在飛行分配變量值在bash

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" 

但它似乎並沒有工作。

請求一些幫助。

回答

2

使用declare內置的bash-g標誌,使其全局可用,

#!/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> 
+1

'IFS =「=‘'是相同'IFS =’=」'爲'IFS'僅分割單字符 – anubhava

+1

@anubhava:非常感謝anubhava!欣賞它! – Inian