在bash中检查XML的内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在bash中检查XML的内容相关的知识,希望对你有一定的参考价值。

我无法解决这个问题并希望得到你的帮助。

在bash脚本中,我使用curl命令,该命令应该从服务器获取数据。 curl响应被放入bash变量中,因为我想检查响应。

响应如下:

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Body><dp:response xmlns:dp="http://www.datapower.com/schemas/management">
    <dp:timestamp>2018-02-28T13:31:36+01:00</dp:timestamp>
    <dp:result> OK </dp:result>
    </dp:response>
  </env:Body>
</env:Envelope>

重要的是:

<dp:result> OK </dp:result>

如何在我的bash脚本中检查这个确切的字符串是否在变量中(或不是)?我尝试了几种具有不同类型逃逸的方法,然而,到目前为止失败了(总是以一个特殊字符的问题结束)。

谢谢您的帮助!

答案

试试这个,使用适当的工具来做正确的工作:

命令:

curl ..... | xmllint --xpath '//*[local-name()="result"]/text()' 

要么

xmllint --xpath '//*[local-name()="result"]/text()' http://domain.tld/path

要么

curl ..... | xmlstarlet sel -t -v '//*[local-name()="result"]/text()'

输出:

OK

最后:

#!/bin/bash

result="$(chosen_command)"

if [[ $result == *OK* ]]; then
    echo "OK"
else
    echo >&2 "ERROR"
    exit 1
fi

(用你选择的命令取代chosen_command

以上是关于在bash中检查XML的内容的主要内容,如果未能解决你的问题,请参考以下文章

从 XML 声明片段获取 XML 编码:部分内容解析不支持 XmlDeclaration

创建片段而不从 java 代码实例化它

markdown 通过bash命令运行Cacher片段内容

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

sh Bash的代码片段

如何在 bash 或 python 中检查 Ubuntu 程序 coredump?