热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Shell编程1:使用Linuxshell脚本修改xml文件内容

我们的项目中有一个SkyCameraInfo.xml,在每次启动程序后需要手动修改这个xml文件里的内容,修改方式有两种:1、使用sed命令新建shell脚本test.sh,赋予脚

我们的项目中有一个SkyCameraInfo.xml,在每次启动程序后需要手动修改这个xml文件里的内容,修改方式有两种:
1、使用sed命令

  • 新建shell脚本test.sh,赋予脚本可执行权限,脚本内容如下:

#!/bin/sh
if [ $# -ne 9 ];then
echo "usage argument 1:Version 2:Model 3: qId 4:qKey 5:mdQkey 6:SN 7:Mac 8:qKey2 9:mdQkey2"
exit 1
fi
Version=$1
Model=$2
qId=$3
qKey=$4
mdQkey=$5
SN=$6
Mac=$7
qKey2=$8
mdQkey2=$9
sed -i "s/.*<\/Version>/${Version}<\/Version>/;s/.*<\/Model>/${Model}<\/Model>/;s/.*<\/qId>/${qId}<\/qId>/;s/.*<\/qKey>/${qKey}<\/qKey>/;s/.*<\/mdQkey>/${mdQkey}<\/mdQkey>/;s/.*<\/SN>/${SN}<\/SN>/;s/.*<\/Mac>/${Mac}<\/Mac>/;s/.*<\/qKey2>/${qKey2}<\/qKey2>/;s/.*<\/mdQkey2>/${mdQkey2}<\/mdQkey2>/" SkyCameraInfo.xml
echo "The values of SkyCameraInfo.xml have changed."

  • 在执行shell脚本时候,添加9个参数,执行结束后xml文件中的内容被修改;

[root@localhost cfg]# ./test.sh 1 2 3 4 5 6 7 8 9
The values of SkyCameraInfo.xml have changed.
[root@localhost cfg]# cat SkyCameraInfo.xml
<?xml version="1.0"?>
<SkyCameraInfo>
<Version>1</Version>
<Model>2</Model>
<qId>3</qId>
<qKey>4</qKey>
<mdQkey>5</mdQkey>
<SN>6</SN>
<Mac>7</Mac>
<qKey2>8</qKey2>
<mdQkey2>9</mdQkey2>
</SkyCameraInfo>
[root@localhost cfg]#

2、直接输出xml内容

  • shell脚本如下:

#!/bin/sh
if [ $# -ne 9 ];then
echo "usage argument 1:Version 2:Model 3: qId 4:qKey 5:mdQkey 6:SN 7:Mac 8:qKey2 9:mdQkey2"
exit 1
fi
Version=$1
Model=$2
qId=$3
qKey=$4
mdQkey=$5
SN=$6
Mac=$7
qKey2=$8
mdQkey2=$9
cat <<EOF >SkyCameraInfo.xml
<?xml version="1.0"?>
<SkyCameraInfo>
<Version>${Version}</Version>
<Model>${Model}</Model>
<qId>${qId}</qId>
<qKey>${qKey}</qKey>
<mdQkey>${mdQkey}</mdQkey>
<SN>${SN}</SN>
<Mac>${Mac}</Mac>
<qKey2>${qKey2}</qKey2>
<mdQkey2>${mdQkey2}</mdQkey2>
</SkyCameraInfo>
EOF
echo "The values of SkyCameraInfo.xml have changed."

  • 执行shell脚本;

[root@localhost cfg]# ./test1.sh 1 3 5 7 9 11 13 15 17
The values of SkyCameraInfo.xml have changed.
[root@localhost cfg]# cat SkyCameraInfo.xml
<?xml version="1.0"?>
<SkyCameraInfo>
<Version>1</Version>
<Model>3</Model>
<qId>5</qId>
<qKey>7</qKey>
<mdQkey>9</mdQkey>
<SN>11</SN>
<Mac>13</Mac>
<qKey2>15</qKey2>
<mdQkey2>17</mdQkey2>
</SkyCameraInfo>
[root@localhost cfg]#

参考文章:https://www.cnblogs.com/softidea/p/6039991.html


推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 无损压缩算法专题——LZSS算法实现
    本文介绍了基于无损压缩算法专题的LZSS算法实现。通过Python和C两种语言的代码实现了对任意文件的压缩和解压功能。详细介绍了LZSS算法的原理和实现过程,以及代码中的注释。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Linux磁盘的分区、格式化的观察和操作步骤
    本文介绍了如何观察Linux磁盘的分区状态,使用lsblk命令列出系统上的所有磁盘列表,并解释了列表中各个字段的含义。同时,还介绍了使用parted命令列出磁盘的分区表类型和分区信息的方法。在进行磁盘分区操作时,根据分区表类型选择使用fdisk或gdisk命令,并提供了具体的分区步骤。通过本文,读者可以了解到Linux磁盘分区和格式化的基本知识和操作步骤。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
author-avatar
开着宝马X6去赶集_692
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有