liunx 通过shell查找文件路径为可变,修改xml配置的值

本文介绍了两个bash脚本版本,初级版用于在JBOSS部署后获取class路径并可能进行修改,包括删除和插入XML文件中的特定行。进阶版增加了错误检查和更复杂的路径处理。

初级版本

#!/bin/bash

# 指定 XML 文件路径
xml_path="/build/linux/config.xml";

# 指定 jboss 文件路径
jboss_path="/build/jboss-eap-7.4/standalone";

#jboss通过浏览器控制台部署项目后,获取class路径
classes_path=$(find $jboss_path/tmp/vfs/temp/*/content-*/WEB-INF/classes -type d | head -n 1)

#输出class路径
echo "目标路径是: $classes_path"

#删除第6行
if sed -i '6d' $xml_path; then
    echo "删除第6行成功"
else
    echo "删除第6行失败"
fi

#使用正则获取旧值
oldvalue=$(grep -E '<property name=\"class\" value=\"/build/jboss-eap-7.4/standalone/tmp/vfs/temp/.*/content-.*/WEB-INF/classes\"/>' $xml_path)
echo "oldvalue: $oldvalue"


#插入一行<property name="class" value="/build/jboss-eap-7.4/standalone/tmp/vfs/temp/temp4587a5b75e08qsdg/content-5d5cbcdadehbewqx/WEB-INF/classes"/>
if sed -i "6 i $insert" $xml_path; then
    echo "在第6行插入成功"
else
    echo "在第6行插入失败"
fi


#未测试使用
#使用如下命令替换OpenCV REQUIRED为OpenCV 3 REQUIRED
#sed -i "s/OpenCV REQUIRED/OpenCV 3 REQUIRED/g" CMakeLists.txt

进阶版本

#!/bin/bash

#指定行号
lineint="4";

# 指定 XML 文件路径
xml_path="/build/linux/config.xml";

# 指定 jboss 文件路径
jboss_path="/build/jboss-eap-7.4/standalone/tmp/vfs/temp";

if [ ! -f "$xml_path" ]; then
    echo "请检查$xml_path配置文件是否存在"
    exit 1
fi

#jboss通过浏览器控制台部署项目后,获取class路径
if [ ! -d "$jboss_path" ]; then
    echo "请检查$jboss_path路径是否正确"
    exit 1
fi
#-type d 参数表示只查找目录
#| head -n 1 表示只取查找结果的第一行,也就是第一个找到的目录路径。
classes_path=$(find $jboss_path/*/content-*/WEB-INF/classes -type d | head -n 1)

#使用正则获取旧值
oldvalue=$(grep -E '<property name=\"class\" value=\"/build/jboss-eap-7.4/standalone/tmp/vfs/temp/.*/content-.*/WEB-INF/classes\"/>' $xml_path)

#插入新行内容
insert="<property name=\"class\" value=\"$classes_path\"/>";

if [ "$oldvalue" == "$insert" ]; then
    echo "已经是最新classes_path: $classes_path"
else
    #删除第指定行号
    if sed -i $lineint'd' $xml_path; then
        echo "删除第$lineint行成功: $oldvalue"
    else
        echo "删除第$lineint行失败"
    fi
    
    #插入指定行号内容
    if sed -i "$lineint i $insert" $xml_path; then
        echo "在第$lineint行插入成功: $insert"
    else
        echo "在第$lineint行插入失败"
    fi
fi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值