You need to enable JavaScript to run this app. 如何在shell脚本读取properties文件后将键值对存入自定义变量
优惠活动
大模型
产品
解决方案
定价
更多

如何在shell脚本读取properties文件后将键值对存入自定义变量

可行实现方案(纯POSIX sh兼容)

以下代码无需依赖bash等扩展shell特性,可直接在sh格式脚本中运行,自动读取properties配置并生成带指定前缀的变量:

#!/bin/sh
# 配置项
CONFIG_FILE="thing.properties"
# 变量前缀,可按需修改
VAR_PREFIX="thing"

# 逐行读取处理配置文件
while IFS='=' read -r raw_key raw_value || [ -n "$raw_key" ]; do
    # 跳过空行、#开头的注释行
    case "$raw_key" in
        ''|'#'*) continue ;;
    esac
    
    # 移除键两端的空白字符
    key=$(printf '%s' "$raw_key" | sed 's/^[[:space:]]*//; s/[[:space:]]*$//')
    # 移除值两端的空白字符、单引号、双引号
    value=$(printf '%s' "$raw_value" | sed 's/^[[:space:]]*//; s/[[:space:]]*$//; s/^["'\'']//; s/["'\'']$//')
    
    # 动态赋值生成带前缀的变量
    eval "${VAR_PREFIX}${key}='$(printf '%s' "$value" | sed "s/'/'\\\\''/g")'"
done < "$CONFIG_FILE"

# 验证示例,可删除
echo "thingUSERNAME = $thingUSERNAME"
echo "thingPASSWORD = $thingPASSWORD"
echo "thingDB_NAME = $thingDB_NAME"

功能说明

  • 自动适配properties文件中等号两边的空格,自动去除值两端的单/双引号
  • 自动跳过空行和#开头的注释行
  • 兼容配置文件末尾无换行的场景

注意事项

  • 该方案仅适用于可信的内部配置文件,如果配置文件来源不可控,eval会存在命令注入风险
  • 变量前缀可按需修改VAR_PREFIX变量调整,比如改成prod_就会生成prod_USERNAME这类变量

内容的提问来源于stack exchange,提问作者Adi Krish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 17:54:05