将逗号分隔的key = value对的字符串存储为$ key,$ value变量在shell中

时间:2017-06-19 20:22:48

标签: bash dictionary

在我的bash shell脚本中,我有一个逗号分隔的键,值对以单个字符串的形式。如何在单独的变量中解析和存储每个键和值。
例如,string1="key1=value1,key2=value2"

我想将其转换为,{{{ 1}}
string1中的键值对的数量是动态的。如何在shell脚本中执行此操作?
我使用cut来获取密钥和值。但我不确定如何循环使用字符串中的数字对。

echo 'key1 = value1' >> key1.txt
echo 'key2 = value2' >> key2.txt

2 个答案:

答案 0 :(得分:5)

#!/bin/bash

string1="key1=value1,key2=value2"

while read -d, -r pair; do
  IFS='=' read -r key val <<<"$pair"
  echo "$key = $val"
done <<<"$string1,"

请注意,中的结尾"$string1,",以确保read也使用 last {进入while循环体{1}} - 分开的令牌。

的产率:

,

将键值对写入顺序编号的文件(key1 = value1 key2 = value2 ,从key<n>.txt开始):

1

答案 1 :(得分:-2)

假设你在谈论bash,这样的事情可以起作用:

#!/bin/bash

string1="key1=value1,key2=value2"
OIFS="$IFS"
IFS=","

for pair in ${string1}
do
        declare $pair
done

IFS="$OIFS"

echo $key1
echo $key2