我有以下 xml 文件
<root> <deviceID>IO238470374109730497</devicdeID> <KeyValuePairs> <KeyValuePair> <BASE-URL>site.com</BASE-URL> <Key>329482</Key> <Value>23094</Value> </KeyValuePair> <KeyValuePair> <BASE-URL>anothersite.com</BASE-URL> <Key>36657</Key> <Value>1233</Value> </KeyValuePair> <KeyValuePair> <BASE-URL>yetanothsite.com</BASE-URL> <Key>3345</Key> <Value>65087</Value> </KeyValuePair> </KeyValuePairs> </root>
我想提取所有值<BASE-URL>,<Key>,<Value>
并将它们设置为 bash 脚本中的变量。
执行此命令只会打印值
xmlstarlet sel -t -m '//KeyValuePair' -v 'concat(BASE-URL," ", Key, " ", Value, " ")' -nl file.xml
如何将这些值设置为变量?
我想从 xml 中提取值并将它们发送到这样的变量<BASE-URL>
to $base_url
、<Key>
to$key
和<Value>
to $value
。
答案1
假设这些值不包含空格,您可以执行以下操作:
xmlstarlet sel -t -m '//KeyValuePair' -v 'concat(BASE-URL," ", Key, " ", Value, " ")' -nl file.xml | while read base_url key value
do
echo "base_url=$base_url key=$key value=$value"
done