在bash中检查XML的内容

前端之家收集整理的这篇文章主要介绍了在bash中检查XML的内容前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我无法解决这个问题并希望得到你的帮助.

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

响应如下:

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

重要的是:

  1. <dp:result> OK </dp:result>

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

谢谢您的帮助!

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

命令:

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

要么

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

要么

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

输出

  1. OK

最后:

  1. #!/bin/bash
  2.  
  3. result="$(chosen_command)"
  4.  
  5. if [[ $result == *OK* ]]; then
  6. echo "OK"
  7. else
  8. echo >&2 "ERROR"
  9. exit 1
  10. fi

(用你选择的命令替换chosen_command)

猜你在找的Bash相关文章