在我的bash shell脚本中,我有一个逗号分隔的键,值对以单个字符串的形式。如何在单独的变量中解析和存储每个键和值。
例如,string1="key1=value1,key2=value2"
我想将其转换为,{{{ 1}}
string1中的键值对的数量是动态的。如何在shell脚本中执行此操作?
我使用cut来获取密钥和值。但我不确定如何循环使用字符串中的数字对。
echo 'key1 = value1' >> key1.txt
echo 'key2 = value2' >> key2.txt
答案 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