通过bat,shell脚本读取properties配置文件拼接字符串

通过bat,shell脚本读取properties配置文件拼接字符串

1. bat script

@echo off

:: 读取配置文件
echo ====== toman-archetype ======
echo Reading configuration file config.properties

setlocal EnableDelayedExpansion
:: eol=#: 忽略注释行 tokens:取第1,2列,第一列%%i,第二列%%j delims==:每行以=分割
for /f "eol=# tokens=1,2 delims==" %%i in (config.properties) do (

    set key=%%i

    ::trim left whitespace
    for /f "tokens=* delims= " %%a in ("!key!") do set key=%%a
    ::trim right whitespace (up to 100 spaces at the end)
    for /l %%a in (1,1,100) do if "!key:~-1!"==" " set key=!key:~0,-1!

    set value=%%j

    ::trim left whitespace
    for /f "tokens=* delims= " %%a in ("!value!") do set value=%%a
    ::trim right whitespace (up to 100 spaces at the end)
    for /l %%a in (1,1,100) do if "!value:~-1!"==" " set value=!value:~0,-1!

    :: 拼接参数
    set params=!params! -D!key!=!value!

    :: 打印所有的属性配置
    echo !key! : !value!
)

:: 打印参数
echo !params!

:: 生成项目结构
:: set MAVEN_HOME=D:\jd-dev-env\apache-maven-3.5.4
%MAVEN_HOME%\bin\mvn archetype:generate -B !params!

pause

2. shell script

#!/bin/bash

echo ======= toman-archetype ======

echo Read configuration file config.properties

# 定义数组 CONFIG
declare -a CONFIG
# IFS is the 'internal field separator'. In this case, your file uses '='
IFS="="
while read -r key value
do
    # trim key
    ckey=`echo $key |sed "s/^[[:space:]]*//g;s/[[:space:]]*$//g"`
    # trim value
    cvalue=`echo $value |sed "s/^[[:space:]]*//g;s/[[:space:]]*$//g"`
    
    # 如果key不是以空格开始而且不是以#开始,则认为是有效行,将配置信息保存到数组中
    if [[ $ckey =~ [^[:space:]] ]] && [[ $ckey != \#* ]]
    then
        CONFIG[$ckey]=$cvalue
    # 打印有效配置信息
    echo $ckey : $cvalue
    # 拼接参数
    params=`echo "$params -D$ckey=$cvalue"`
    fi
done < config.properties
unset IFS

# 打印参数
echo $params

# 设置环境变量
# export MAVEN_HOME=D:\jd-dev-env\apache-maven-3.5.4
# 执行Maven命令
${MAVEN_HOME}\bin\mvn archetype:generate -B $params

pause
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值