shell脚本中如何读取配置文件中的全局变量

1、使用source读取配置文件

在Shell脚本中读取配置文件中的全局变量,一种常见的方式是建立全局配置文件(如取名为config.env),变量都写在里面,然后在脚本中使用source进行读取解析。以下是一个示例:

全局配置文件config.env示例:

# global config file : config.env

#[mysql]
Mysql_Ip="192.168.10.99"
Mysql_Port=3306

#[NFS]
Nfs_Server_Ip="192.168.10.98"
NFS_Capacity="5G"
test_ip=192.168.10.97

脚本read_conf.sh示例,作用是读取配置文件config.env,打印需要的变量。

#!/bin/bash

# 读取配置文件
source ./config.env

# 输出全局变量的值
echo $Mysql_Ip
echo $Mysql_Port
echo $NFS_Capacity
echo $test_ip

read_conf.sh脚本运行的输出结果,可以看到,达到我们的预期。

[root@others ]# sh read_conf.sh 

192.168.10.99
3306
5G
192.168.10.97

脚本能够正确读取输出全局变量的值。

通过test_ip测试还可知,IP地址加双引号和不加双引号,都能正确读取。

2、使用crudini读取

crudini的使用在我的另一篇博客有描述,这里直接放一个链接:

自动部署工作流程与注意点_70年代的生猛海鲜的博客-CSDN博客

3、两种方法的区别

crudini支持指定配置文件路径、变量的分段分节,能读取并修改配置文件;

source是shell的内置命令,相当于在当前shell中执行另外 一个文件,解析出文件中的命令和变量,并在当前shell中执行它。这样文件中定义的变量就可以在当前shell中使用,他不支持变量分节,不能修改配置。

总的说来:crudini使用灵活、专业、扩展性强;source的方法简单直接,不需要安装额外命令。读者就按需选用吧。

猜你喜欢

转载自blog.csdn.net/aligeter/article/details/131569121