获取xml2以文件形式而不是分配的名称读取另一个命令的输出?

时间:2018-08-17 02:57:15

标签: bash loops xml-parsing xml2

在脚本中,我正在运行一个cURL命令,该命令返回一个xml文件。我正在尝试获取cURL命令的结果,并使用xml2对其进行解析。

#! /bin/bash
# xmlParse.sh

while read line
do
   appID=`echo $line 
         | awk -F "app_id=" '{print $2}' 
         | awk '{print $1}' 
         | sed 's/\"//g'`

     # output is a numerical value, ex: 123456

   scanID=`curl --silent -u $uid:$pw $second_api_call -F app_id="$appID" 
          | awk -F "scan_id=" '{print $2}'
          | awk '{print $1}'          
          | sed 's/\"//g' 
          | sed '/^$/d' 
          | tail -1` # this grabs the last scan on the app.

    # output is a different numerical value, ex: 1234567

   get_report=`curl --silent -u $uid:$pw $last_api_call -F scan_id="$scanID"`

    # $get_report output is a report in a single line xml file.

   c_name=`"xml2 < $get_report" | grep @name= | cut -d "=" -f2`

   echo $c_name

done < <(curl --silent -u $uid:$pw $first_api_call)

我的错误如下:

./xmlParse.sh: line 7: xml2 < <?xml version='1.0' encoding='UTF-8'?>......
xml: File name too long

似乎它不是作为.xml文件读取,但由于整个文件是一个名称。 xml文件返回为一行。我已经尝试了多种可能的解决方案,但是感觉就像是我在挖一个更深的洞,现在开始盘旋。当我在终端中运行命令时,它可以正常工作并返回如下结果:

$ xml2 < report.xml | grep @name= | cut -d "=" -f2
Data Issues
Insufficient Memory
Insufficient Memory
Insufficient Memory
RSA Algorithm 
Risky Algorithm
Code Quality
Improper Execution
Wrong Operator in String
Sensitive Information
Exposure Through Sent Data

0 个答案:

没有答案