我的编程空间,编程开发者的网络收藏夹
学习永远不晚

shell怎么读取配置文件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

shell怎么读取配置文件

本篇内容介绍了“shell怎么读取配置文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在编写启动脚本时,涉及到读取配置文件,特地记录下shell脚本读取启动文件的方式。主要提供两种格式的读取方式,方式一配置文件采用“[]”进行分区,方式二配置文件中需要有唯一的配置项名称。

配置文件格式如下:

# cat -n config.ini #MYSQL配置项 [MYSQL] DB_HOST=192.168.0.1 DB_PORT=3306 DB_USER=root DB_PASSWD=mysql1234 DB_NAME=system_manager1 #MYSQL_1配置项 [MYSQL_1] MYSQL_DB_HOST=192.168.0.2 MYSQL_DB_PORT=2200 MYSQL_DB_USER=root MYSQL_DB_PASSWD=mysql123456 MYSQL_DB_NAME=bigdata1 MYSQL_INIT_SQL='set slave;stop backup;' #REDIS配置项 [REDIS] DB_HOST=192.168.0.1 DB_PORT=6379 DB_ID=4 DB_PASSWD=redis1234

方式一:先试使用grep获取配置项的开始行、结束行。

# grep -n -E '^\[' config.ini |grep -A 1 "\[MYSQL\]"|awk -F ':' '{print $1}'|xargs2 10# grep -n -E '^\[' config.ini |grep -A 1 "\[REDIS\]"|awk -F ':' '{print $1}'|xargs19

在使用sed根据开始行、结束行获取实际配置

# sed -n "2,10 s/DB_HOST=//p" config.ini192.168.0.1# sed -n "19,$ s/DB_PORT=//p" config.ini6379

方式二:使用正则匹配唯一的配置项名称,并显示实际配置

# sed -r -n 's/(^MYSQL_INIT_SQL=)(.*)$/\2/p' config.ini'set slave;stop backup;'# sed -r -n 's/(^MYSQL_DB_HOST=)(.*)$/\2/p' config.ini192.168.0.2

完整脚本如下:

# cat config.sh#!/bin/bashset -eexit_script(){   exit 1}if [ "$#" = 0 ]; then    echo "参数错误,命令格式为:    ./config.sh configfile"    exit_scriptelse    configPath=$1fifunction get_line_num(){    local configKey=$1    grep -n -E '^\[' ${configPath} |grep -A 1 "\[${configKey}\]"|awk -F ':' '{print $1}'|xargs}function get_config(){    #local configPath=$1    local configKey=$1    local configName=$2    local line_num=$(get_line_num $configKey)    local startLine=$(echo $line_num |awk '{print $1}')    local endLine=$(echo $line_num|awk '{print $2}')    if [ ${endLine} ];then        sed -n "${startLine},${endLine} s/${configName}=//p" ${configPath}    else        sed -n "${startLine},$ s/${configName}=//p" ${configPath}    fi}if [ -f $configPath ];then    MYSQL_DB_HOST=$(get_config MYSQL DB_HOST)else    echo ${configPath}"文件不存在,请检查配置文件是否存在"    exit_scriptfiMYSQL_DB_PASSWD=$(get_config MYSQL DB_PASSWD)MYSQL_DB_USER=$(get_config MYSQL DB_USER)REDIS_DB_HOST=$(get_config REDIS DB_HOST)REDIS_DB_PASSWD=$(get_config REDIS DB_PASSWD)MYSQL_DB_HOST=$(sed -r -n 's/(^MYSQL_DB_HOST=)(.*)$/\2/p' $configPath)MYSQL_DB_NAME=$(sed -r -n 's/(^MYSQL_DB_NAME=)(.*)$/\2/p' $configPath)INIT_SQL=$(sed -r -n 's/(^MYSQL_INIT_SQL=)(.*)$/\2/p' $configPath)echo "MYSQL_DB_HOST="${MYSQL_DB_HOST}echo "MYSQL_DB_PASSWD="${MYSQL_DB_PASSWD}echo "MYSQL_DB_USER="${MYSQL_DB_USER}echo "REDIS_DB_HOST="${REDIS_DB_HOST}echo "REDIS_DB_PASSWD="${REDIS_DB_PASSWD}echo "-----------------分割线-------------"echo "使用sed读取配置:MYSQL_DB_HOST="${MYSQL_DB_HOST}echo "使用sed读取配置:MYSQL_DB_NAME="${MYSQL_DB_NAME}echo "使用sed读取配置:MYSQL_INIT_SQL="${INIT_SQL}

实际执行结果:

# ./config.sh config.i
config.i文件不存在,请检查配置文件是否存在

# ./config.sh config.ini
MYSQL_DB_HOST=192.168.0.2
MYSQL_DB_PASSWD=mysql1234
MYSQL_DB_USER=root
REDIS_DB_HOST=192.168.0.1
REDIS_DB_PASSWD=redis1234
-----------------分割线-------------
使用sed读取配置:MYSQL_DB_HOST=192.168.0.2
使用sed读取配置:MYSQL_DB_NAME=bigdata1
使用sed读取配置:MYSQL_INIT_SQL='set slave;stop backup;'

“shell怎么读取配置文件”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

shell怎么读取配置文件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

shell怎么读取配置文件

本篇内容介绍了“shell怎么读取配置文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在编写启动脚本时,涉及到读取配置文件,特地记录下sh
2023-07-06

Shell中怎么读取ini格式配置文件

Shell中怎么读取ini格式配置文件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。代码如下:[COM]KINGGOO = jb51.net其实这个作用没那么特
2023-06-09

Python怎么读取配置文件

这篇文章主要讲解了“Python怎么读取配置文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么读取配置文件”吧!一、 yaml1、 准备支持的数据类型:字典、列表、字符串、布
2023-07-05

Shell脚本怎么读取标准ini配置文件Demo

这篇文章主要讲解了“Shell脚本怎么读取标准ini配置文件Demo”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shell脚本怎么读取标准ini配置文件Demo”吧!ini DEMO代码如
2023-06-09

springboot怎么读取配置文件

在Spring Boot中,可以通过`@Value`注解、`Environment`接口、`@ConfigurationProperties`注解等方式来读取配置文件。使用`@Value`注解读取配置文件中的值:import org.spr
2023-10-25

Android怎么读取并配置文件

这篇文章主要讲解了“Android怎么读取并配置文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android怎么读取并配置文件”吧!1、配置properties文件先创建properti
2023-06-05

java怎么读取properties配置文件

在Java中,可以使用`java.util.Properties`类来读取.properties配置文件。下面是一个简单的示例代码:```javaimport java.io.FileInputStream;import java.io.I
2023-09-20

java怎么读取yml配置文件

在Java中读取YAML配置文件可以使用SnakeYAML库。以下是一个简单的示例,演示了如何读取YAML配置文件:1. 首先,确保你已经将SnakeYAML库添加到你的项目中。你可以通过Maven或者Gradle来添加依赖。2. 创建一个
2023-08-18

java怎么读取xml配置文件

在Java中,读取XML配置文件有多种方法,其中比较常用的是使用DOM解析器或者SAX解析器。1. 使用DOM解析器:```javaimport javax.xml.parsers.DocumentBuilder;import javax.
2023-09-11

Shell脚本读取标准ini配置文件Demo

ini DEMO[TESTFTP] host=127.0.0.1 name=my pass=mylove type=ftp [TESTSSH] host=127.0.0.1 name=my pass=mylove type=ssh [END
2022-06-04

shell怎么读取文件内容

在shell脚本中,可以使用多种方法来读取文件的内容,下面是一些常用的方法:1. 使用cat命令:cat命令可以用于将文件的内容输出到终端,也可以将文件的内容重定向到其他文件或命令中。例如,要将文件的内容输出到终端,可以使用以下命令:`ca
2023-09-14

springboot怎么读取外部配置文件

Spring Boot可以通过使用@PropertySource注解来读取外部配置文件。以下是一种常见的方法:1. 创建一个配置类,例如ApplicationConfig:```java@Configuration@PropertySour
2023-09-25

redis读取配置文件

redis 读取配置文件的路径位于 /etc/redis/redis.conf 或 /usr/local/etc/redis/redis.conf。它会读取配置文件并逐行解析,将配置选项存储在内部数据结构中。常见配置选项包括端口、绑定的 i
redis读取配置文件
2024-04-19

怎么用dom4j读取xml配置文件

本篇内容主要讲解“怎么用dom4j读取xml配置文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用dom4j读取xml配置文件”吧!实现步骤以及源码:1、写xml文件读取类读取xml文档内
2023-06-03

tomcat怎么读取外部配置文件

Tomcat可以通过以下几种方式读取外部配置文件:1. 使用`context.xml`文件:可以在Tomcat的`conf/Catalina/localhost/`目录下创建一个与应用程序上下文路径同名的xml文件(例如,应用程序上下文路径
2023-09-28

Shell实现读取ini格式配置文件方法

ini文件格式一般都是由节、键、值三部分组成 格式: [第一节 ] 第一个键 = 值 第二个键 = 第二个值 [第二节 ] 第一个键 = val1,val2,val3 例子:[COM]KINGGOO = gimoo.net其实这个作用没那么
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录