У меня есть xml в местоположении «http://10.xxx.xxx.xx:8080/mbci/collection1/dataimport?command=status», которые имеют XML-данные в формате.Получите значение от xml на лету в сценарии оболочки
<response>
<lst name="responseHeader">
<int name="status">
0
</int>
<int name="QTime">
0
</int>
</lst>
<lst name="initArgs">
<lst name="defaults">
<str name="config">
data-config.xml
</str>
</lst>
</lst>
<str name="command">
status
</str>
<str name="status">
idle
</str>
<str name="importResponse">
A command is still running...
</str>
<lst name="statusMessages">
<str name="Time Elapsed">
0:2:13.132
</str>
<str name="Total Requests made to DataSource">
6
</str>
<str name="Total Rows Fetched">
755949
</str>
<str name="Total Documents Skipped">
0
</str>
<str name="Full Dump Started">
2014-11-18 04:00:18
</str>
</lst>
<str name="WARNING">
This response format is experimental. It is likely to change in the future.
</str>
</response>
Я должен получить от него значение. я не могу в состоянии найти прямой способ сделать это так, я Dowload файл, а затем разобрать XML-файл с помощью следующего сценария
wget http://10.xxx.xxx.xx:8080/mbci/collection1/dataimport?command=status -O status.xml
status=$(grep -oP '(?<="status">).*(?=</str)' status.xml)
Но мне нужно знать, есть ли другой более простой способ сделать это, а не загружать и parse
будет эта работа для переменной вместо файла? –
Да: '$ echo" $ var "| xmllint --xpath '// str [@ name = "importResponse"]/text()'/dev/stdin' ' –
Спасибо @sputnick его работе. Еще одно уточнение - можно ли присвоить выход переменной ?. К сожалению, для прослушивания я новичок в shell-скриптах –