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

관련 정보