解决shell读取配置文件key带点号(.)的问题

本文介绍了一种改进的Shell脚本中加载配置文件的方法,避免了使用source命令导致的command not found错误。通过逐行读取配置文件,解析键值对,并使用eval命令将变量赋值到当前Shell环境中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

传统source读取方式

#application.properties

db.uat.user=user
db.uat.password=password
db.uat.url=https://www.baidu.com


#!/bin/sh

source "application.properties"

echo $db.uat.user
echo $db.uat.password

curl $db.uat.url

运行start.sh出现command not found.

解决方法:

改成如下方式读取

#!/bin/sh

file="application.properties"

if [ -f "$file" ]
then
    echo "$file found."
    while IFS='=' read -r key value
    do
        key=$(echo $key | tr .-/ _ | tr -cd 'A-Za-z0-9_')
        if [ "$value"x != x ]; then      	    
		    eval ${key}=\${value}
        fi
    done < "$file"
else
	echo "$file not found."
fi

echo $db_uat_user
echo $db_uat_password

curl $db_uat_url

效果如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值