如何在Shell脚本中提取环境变量字符串内APPLICATION的值
从DT_CUSTOM_PROP中提取APPLICATION变量值的实现方案
现有DT_CUSTOM_PROP为空格分隔的多组键=值格式字符串,目标是提取APPLICATION对应的取值,导出为独立环境变量,最终执行echo $APPLICATION可输出对应的值,以下是几种稳定可用的实现方式:
- 方案1:Bash内置语法实现(无外部依赖,性能最优)
不需要调用sed、awk等外部命令,纯靠Shell内置逻辑完成解析,不受键值对顺序变化影响:set -- $DT_CUSTOM_PROP for item in "$@"; do if [[ $item == APPLICATION=* ]]; then export APPLICATION="${item#APPLICATION=}" break fi done - 方案2:Awk文本处理实现(单行命令,写法简洁)
遍历所有空格分隔的字段,匹配到APPLICATION对应的键值对后截取出值:export APPLICATION=$(echo "$DT_CUSTOM_PROP" | awk '{for(i=1;i<=NF;i++) if($i ~ /^APPLICATION=/) {sub(/^APPLICATION=/,"",$i); print $i; exit}}') - 方案3:Sed正则匹配实现
通过正则捕获APPLICATION=之后到下一个空格之前的内容,就是目标取值:export APPLICATION=$(echo "$DT_CUSTOM_PROP" | sed -n 's/.*APPLICATION=\([^ ]*\).*/\1/p')
避坑提示:不要用硬编码字段位置的写法(比如直接按空格cut取固定序号字段),一旦后续
DT_CUSTOM_PROP里的键值对顺序调整,这类写法会直接取错值。上面三种方案都是按键名匹配,键值对顺序变化不影响结果。
内容的提问来源于stack exchange,提问作者Amin Ba
相关产品推荐
相关产品推荐

