linux 使用shell脚本从文件读取键值

aamkag61  于 2024-01-06  发布在  Linux
关注(0)|答案(3)|浏览(136)

我有一个配置文件,例如,称为(abc.conf)

abc.conf
------- 
location1=/opt/test1/locationx
location2=/opt/test1/locationy
location3=/opt/test1/locationz

字符串
我有样本代码,如果我不使用这样的路径和斜线工作正常

getProperty()
{
PROPERTY_FILE=$1
PROP_KEY=$2
PROP_VALUE=`cat $PROPERTY_FILE | grep -w "$PROP_KEY" | cut -d'=' -f2`
echo $PROP_VALUE
}


使用类似

VALUE=$(getProperty $CONF_FILE $LOCATION1)


但是这个函数有使用它的限制,当我使用它来获取location 1时,它也会获取location 2/location 3,就像类似的位置一样,而不是特定的键值。

ds97pgxw

ds97pgxw1#

这个代码正在工作。
调用函数,

$ getProperty abc.conf location1(2 or 3)
/opt/test1/locationx

字符串

siv3szwd

siv3szwd2#

使用awk正确地将键匹配限制到第一个字段。

getProperty()
{
    awk -F= -v key=$2 '$1 == key {print $2} "$1"
}

字符串

mznpcxlj

mznpcxlj3#

在Bash 4.3及更新版本中,您可以在没有任何外部工具或子shell的情况下完成此操作:

declare -A locations
while IFS='=' read -d $'\n' -r key value; do
    locations[$key]="$value"
done < abc.conf

字符串
通过相应的密钥访问各个位置,例如locations["location1"]

相关问题