如何编写含多分组的Properties文件模板(Shell脚本场景)
嘿,作为Shell脚本新手,能想到用模板来生成这种带分组的Properties文件真的很赞!其实完全可以用Shell脚本轻松实现这个需求,下面我给你两种实用的方法,你可以根据自己的场景来选:
方法1:直接用echo命令逐行写入
这种方法适合模板内容不多的场景,逻辑简单易懂,直接把每个分组的内容通过echo输出到目标文件里就行:
#!/bin/bash # 定义要生成的Properties文件名 PROPS_FILE="config.properties" # 清空已有文件(如果存在)或创建新文件 > "$PROPS_FILE" # 写入dev分组内容 echo "[dev]" >> "$PROPS_FILE" echo "JDBC_URL = jdbc:h2:mem:mem_test;MODE=Oracle" >> "$PROPS_FILE" echo "JDBC_USERNAME =" >> "$PROPS_FILE" echo "JDBC_PASSWORD =" >> "$PROPS_FILE" echo "SERVICE_ENDPOINT = http://localhost:8080/Central/api/AppService" >> "$PROPS_FILE" echo "" >> "$PROPS_FILE" # 用空行分隔不同分组,让结构更清晰 # 写入qa分组内容 echo "[qa]" >> "$PROPS_FILE" echo "JDBC_URL = jdbc:oracle:thin:@qa-oracle:1521:qa" >> "$PROPS_FILE" echo "JDBC_USERNAME = qauser" >> "$PROPS_FILE" echo "JDBC_PASSWORD =" >> "$PROPS_FILE" echo "SERVICE_ENDPOINT =" >> "$PROPS_FILE"
运行这个脚本后,就能得到你想要的带分组的Properties文件啦。如果后续要修改某个配置项,直接找到对应的echo行修改就行。
方法2:用Here Document批量写入(更推荐)
如果你的模板内容比较多,或者想要让代码和最终的Properties格式更一致,那用Here Document会更直观——不用反复写echo,直接把整个模板内容“抄”进去就行:
#!/bin/bash PROPS_FILE="config.properties" # 使用Here Document将模板内容写入文件 cat > "$PROPS_FILE" << EOF [dev] JDBC_URL = jdbc:h2:mem:mem_test;MODE=Oracle JDBC_USERNAME = JDBC_PASSWORD = SERVICE_ENDPOINT = http://localhost:8080/Central/api/AppService [qa] JDBC_URL = jdbc:oracle:thin:@qa-oracle:1521:qa JDBC_USERNAME = qauser JDBC_PASSWORD = SERVICE_ENDPOINT = EOF
这种方式下,你看到的EOF之间的内容就是最终生成的Properties文件的样子,修改起来特别方便,一眼就能看清整个文件的结构,非常适合维护复杂的模板。
进阶玩法:动态替换配置变量
如果你想让模板更灵活(比如需要批量生成不同环境的配置文件),还可以给模板加上动态变量,这样只需要修改变量值就能快速生成不同的配置:
#!/bin/bash # 先定义好需要动态替换的变量 DEV_JDBC_URL="jdbc:h2:mem:mem_test;MODE=Oracle" QA_JDBC_USERNAME="qauser" QA_JDBC_URL="jdbc:oracle:thin:@qa-oracle:1521:qa" PROPS_FILE="config.properties" cat > "$PROPS_FILE" << EOF [dev] JDBC_URL = $DEV_JDBC_URL JDBC_USERNAME = JDBC_PASSWORD = SERVICE_ENDPOINT = http://localhost:8080/Central/api/AppService [qa] JDBC_URL = $QA_JDBC_URL JDBC_USERNAME = $QA_JDBC_USERNAME JDBC_PASSWORD = SERVICE_ENDPOINT = EOF
比如下次要生成测试环境的配置,只需要修改开头的变量值,脚本就能自动生成对应的Properties文件,特别高效!
内容的提问来源于stack exchange,提问作者Srishti Tiwari
相关产品推荐
相关产品推荐

