广告位联系
返回顶部
分享到

使用Shell实现ini文件的读写的介绍

linux shell 来源:互联网 作者:佚名 发布时间:2024-12-01 09:09:16 人浏览
摘要

自己写小工具需要用到shell读写ini文件,在网上找了很多资料,自己整理的目前使用没问题的代码如下: set代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

自己写小工具需要用到shell读写ini文件,在网上找了很多资料,自己整理的目前使用没问题的代码如下:

set代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

#!/bin/bash

  

# 提示信息

msg="Please input the param 【<get|set> <file> <section> <key> [value]】"

  

  

# 操作文件

file=$1

# 指定section

section=$2

# 指定key

key=$3

# value

value=$4

  

function get_opt()

{

    INIFILE=$1;

    SECTION=$2;

    ITEM=$3

  

    tmpfile="/tmp/tmp.ini"

    # 去掉配置文件中的注释行和空行,保存到tmpfile中。

    sed '/^#/d;/^$/d' ${INIFILE} > ${tmpfile}

  

    _readIni=`awk -F '=' '/\['${SECTION}'\]/{a=1}a==1&&$1~/'${ITEM}'/{print $2;exit}' ${tmpfile}`

    echo ${_readIni}

}

  

function set_opt()

{

    # 函数使用说明:

    #   write_ini_file <文件> <节> <键> <值>

    #   如果节或者键不存在,则添加

    #   如果节、键存在,值不匹配,则更新

    #   如果节、键、值均存在,则不做操作

  

    allSections=$(awk -F '[][]' '/\[.*]/{print $2}' $1)

    iniSections=(${allSections// /})

    # 判断是否要新建item

    itemFlag="0"

    for temp in ${iniSections[@]};do

        if [[ "${temp}" = "$2" ]];then

            itemFlag="1"

            break

        fi

    done

  

    if [[ "$itemFlag" = "0" ]];then

        echo "[$2]" >> $1

    fi

  

    # 加入或更新value

    awk "/\[$2\]/{a=1}a==1" $1|sed -e '1d' -e '/^$/d'  -e 's/[ \t]*$//g' -e 's/^[ \t]*//g' -e '/\[/,$d'|grep "$3.\?=">/dev/null

    if [[ "$?" -eq 0 ]];then

        # 更新

        # 找到指定item行号码

        itemNum=$(sed -n -e "/\[$2\]/=" $1)

        sed -i "${itemNum},/^\[.*\]/s/\($3.\?=\).*/\1$4/g" $1 >/dev/null 2>&1

        # 如果替换失败,可能文件中有\,更换分隔符为!

        if [[ "$?" -ne 0 ]];then

            sed -i "${itemNum},/^\[.*\]/s!\($3.\?=\).*!\1$4!g" $1

        fi

    else

        # 新增

        sed -i "/^\[$2\]/a\\$3=$4" $1

    fi

}

  

# 判断输入参数

set_opt $file $section $key $value

get代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

#!/bin/bash

  

# 提示信息

msg="Please input the param 【<get|set> <file> <section> <key> [value]】"

  

  

# 操作文件

file=$1

# 指定section

section=$2

# 指定key

key=$3

  

  

function get_opt()

{

    INIFILE=$1;

    SECTION=$2;

    ITEM=$3

  

    tmpfile="/tmp/tmp.ini"

    # 去掉配置文件中的注释行和空行,保存到tmpfile中。

    sed '/^#/d;/^$/d' ${INIFILE} > ${tmpfile}

  

    _readIni=`awk -F '=' '/\['${SECTION}'\]/{a=1}a==1&&$1~/'${ITEM}'/{print $2;exit}' ${tmpfile}`

    echo ${_readIni}

}

  

  

  

# 判断输入参数

get_opt $file $section $key


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • shell脚本实现一键获取linux内存/cpu/磁盘IO信息

    shell脚本实现一键获取linux内存/cpu/磁盘IO信息
    在日常的Linux 系统维护工作中,快速获取系统的状态信息是非常重要的。特别是在服务器出现问题时,能够一键获取 CPU 使用率、内存使用情
  • 使用Shell实现ini文件的读写的介绍
    自己写小工具需要用到shell读写ini文件,在网上找了很多资料,自己整理的目前使用没问题的代码如下: set代码: 1 2 3 4 5 6 7 8 9 10 11 12 13
  • Bash脚本实现实时监测登录
    背景介绍:在服务器的运维管理中,及时监控系统的登录日志对保障系统的安全至关重要。通过实时监控登录日志,运维人员可以发现潜在
  • Linux sort命令具体使用介绍
    sort是 Linux 中用于对文件或标准输入的文本内容进行排序的命令。它支持按数值、字典序、月份、随机等方式排序,并可以控制排序顺序(升
  • shell set -u 和set +u的具体使用
    shell中 ,set -u之后,使用没有初始化的变量,会导致报错 set -u: 表示该命令之后,当命令使用到未定义过的变量时,脚本直接退出,后续命令
  • 使用curl命令查看服务器端口开放情况的方法

    使用curl命令查看服务器端口开放情况的方法
    1.ssh端口 22 curl -v 10.10.10.205:22 1 2 3 4 5 6 7 8 9 10 11 curl -v 10.10.10.205:22 * Trying 10.10.10.205:22... * Connected to 10.10.10.205 (10.10.10.205) port 22 GET / HTTP/1.1
  • linux命令中的大于号、小于号的作用及代表的意思

    linux命令中的大于号、小于号的作用及代表的意思
    在linux中,大家也许会经常看到 、 、 、、这几个小于号、大于号,那么他们分别代表什么意思呢? 好的我们来实验下先,先创建个 test.t
  • 进程状态ps -ef中的e、f含义讲解

    进程状态ps -ef中的e、f含义讲解
    linux或mac控制台下输入ps -ef | grep 关键字可以查看是否有相应的进程启动信息中包含关键字。如: ps的意思是process status,即进程状态。在控
  • Linux中的grep -v、-e、-E用法小结
    grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜
  • Linux实现彻底清理空文件夹的方法

    Linux实现彻底清理空文件夹的方法
    最近工作中遇到一个需求删除指定路径下的所有空文件夹。这里的空文件夹的认定标准是:如果某个文件夹的子文件夹全是空文件夹,也认
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计