次の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
この値を変数にどのように設定できますか?
<BASE-URL>
xmlから値を抽出してto $base_url
、<Key>
to $key
、<Value>
to like this変数に送信したいと思います$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