You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash脚本中提取键值对并将值赋值给自定义变量

Bash提取指定字符串键值对到变量的解决方案

你的现有awk逻辑已经完成了核心的键值拆分,只要把拆分结果转为shell可识别的赋值语句即可实现变量写入,以下是两种可直接使用的实现:

方法1:自动批量生成目标变量(适合键值对多的场景)

自动将驼峰格式的键转为你需要的小写蛇形格式变量名,无需手动逐个定义:

# 遍历awk拆分出的键值对完成赋值
while IFS='=' read -r key value; do
    # 驼峰键名转小写蛇形:FirstName -> first_name
    snake_key=$(echo "$key" | sed -r 's/([A-Z])/_\1/g' | sed 's/^_//' | tr '[:upper:]' '[:lower:]')
    declare "$snake_key=$value"
done < <(echo "$info" | awk -F'[{};=]' '{for(i=2;i<NF-1;i+=2) print $i"="$(i+1)}')

方法2:手动逐个提取(适合键值对少的场景)

逻辑更简单直观,避免循环处理的额外开销:

# 用grep正则匹配提取对应值
first_name=$(echo "$info" | grep -oP 'FirstName=\K[^;]+')
last_name=$(echo "$info" | grep -oP 'LastName=\K[^;]+')
gender=$(echo "$info" | grep -oP 'Gender=\K[^;]+')
status=$(echo "$info" | grep -oP 'Status=\K[^;]+')

效果验证

执行赋值后直接调用变量即可:

echo $first_name # 输出Tom
echo $last_name # 输出White
echo $gender # 输出Male
echo $status # 输出Married

注意事项

如果你的值中包含分号、等号这类特殊分隔符,需要提前调整awk/grep的匹配规则,避免值被意外截断。

内容的提问来源于stack exchange,提问作者oladapo Esan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 16:36:04