在bash中检查XML的内容
发布时间:2020-12-16 01:19:23 所属栏目:安全 来源:网络整理
导读:我无法解决这个问题并希望得到你的帮助. 在bash脚本中,我使用curl命令,该命令应该从服务器获取数据. curl响应被放入bash变量中,因为我想检查响应. 响应如下: ?xml version="1.0" encoding="UTF-8"?env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap
我无法解决这个问题并希望得到你的帮助.
在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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |