欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > Shell脚本实践(修改文件,修改配置文件,执行jar包)

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

2025/5/15 3:50:03 来源:https://blog.csdn.net/fen_fen/article/details/147927946  浏览:    关键词: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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词