在我的bash shell脚本中,我有一个逗号分隔的键,值对以单个字符串的形式.如何在单独的变量中解析和存储每个键和值.
例如,string1="key1=value1,key2=value2"
我想将其转换为,echo 'key1 = value1' >> key1.txt
echo 'key2 = value2' >> key2.txt
string1中键,值对的数量将是动态的.如何在shell脚本中执行此操作?
我用cut来获得关键和价值.但我不确定如何循环使用字符串中的数字对.
string1='key1=value1'
KEY=$(echo $string1 | cut -f1 -d=)
VALUE=$(echo $string1 | cut -f2 -d=)
Run Code Online (Sandbox Code Playgroud)
#!/bin/bash
string1="key1=value1,key2=value2"
while read -d, -r pair; do
IFS='=' read -r key val <<<"$pair"
echo "$key = $val"
done <<<"$string1,"
Run Code Online (Sandbox Code Playgroud)
请注意尾随,输入"$string1,",这确保了使用最后分隔的标记read进入while循环体. ,
收益率:
key1 = value1
key2 = value2
Run Code Online (Sandbox Code Playgroud)
要将键值对写入顺序编号的文件(key<n>.txt,以...开头1):
#!/bin/bash
string1="key1=value1,key2=value2"
i=0
while read -d, -r pair; do
IFS='=' read -r key val <<<"$pair"
echo "$key = $val" > "key$((++i)).txt"
done <<<"$string1,"
Run Code Online (Sandbox Code Playgroud)