XMLタグでbash変数を設定する

XMLタグでbash変数を設定する

次の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

おすすめ記事