Shell脚本实践(修改文件,修改配置文件,执行jar包)

1、前言

需要编写一个shell脚本支持

1、修改.so文件名

2、修改配置文件

3、执行jar包

2、代码解析

2.1、修改.so文件名

so_file_dir="/opt/casb/xxx/lib"

# 处理.so文件
cd "$so_file_dir" || { echo "错误: 无法进入目录 $so_file_dir"; exit 1; }
if [ -e "libCSCipherJNI-release-2.3.8.so" ]; then
    echo "目标.so文件已存在"
else
    so_files=(libCSCipherJNI-release-*.so)
    if [ -e "${so_files[0]}" ]; then
        mv "${so_files[0]}" libCSCipherJNI-release-2.3.8.so
        echo "已重命名.so文件"
    else
        echo "错误: 未找到匹配的.so文件"; exit 1
    fi
fi

2.2、修改配置文件(难点在这个,要注意前后空格)

这里不注意空格,容易导致找不到配置项

# 复制配置文件
if [ -e "$source_file" ]; then
    cp "$source_file" "$target_file"
    echo "已复制配置文件"
else
    echo "错误: 源配置文件不存在"; exit 1
fi

# 替换配置项
cp "$target_file" "${target_file}.bak"

# 安全转义字符串中的特殊字符
escape_sed() {
    echo "$1" | sed -e 's/[\/&]/\\&/g'
}

# 替换函数(带逗号后缀)
replace_property_comma() {
    local config_name="$1"
    local config_value="$2"
    local escaped_name=$(escape_sed "$config_name")
    local escaped_value=$(escape_sed "$config_value")
    
    # 查找配置项(忽略等号周围空格)
    local existing_line=$(grep -E "^[[:space:]]*$escaped_name[[:space:]]*=[[:space:]]*" "$target_file")
    
    if [ -n "$existing_line" ]; then
        # 提取当前配置项的值部分(考虑等号周围的空格)
        current_value=$(echo "$existing_line" | sed -E "s/^[[:space:]]*$escaped_name[[:space:]]*=[[:space:]]*//")
        
        # 如果当前值和要设置的值不同,才进行替换
        if [ "$current_value" != ",$escaped_value,,,,,," ]; then
            # 使用更灵活的正则表达式匹配(忽略等号周围空格)
            sed -i.bak -E "s/^([[:space:]]*$escaped_name[[:space:]]*=[[:space:]]*).*/\1,$escaped_value,,,,,,,/" "$target_file"
            echo "✓ 已更新: $config_name=,$escaped_value"
        else
            echo "配置项 $config_name 值未改变,无需更新"
        fi
    else
        echo "⚠️ 配置项 $config_name 不存在,跳过修改"
    fi
}

# 替换函数(直接为值,不带逗号)
replace_property_value() {
    local config_name="$1"
    local config_value="$2"
    local

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁儿数据安全

您的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值