cURL 响应不显示 XML 正文

cURL 响应不显示 XML 正文

我正在尝试编写一个 bash 脚本,以便更轻松地用于rtmpdump下载 Flash 讲座视频。除了使用 cURL 从 XML 页面获取必要的 mp4 URL 之外,我已经完成了几乎所有其他工作。

当我在终端中运行以下命令时,我得到了我想要的:

curl -s http://amps-web.amps.ms.mit.edu/courses/6/6.046/2017spring/L01/MIT-6.046-lec-mit-0000-2017feb09-1103-L01/settings-flash.xml | grep "rtmp:"

产量:

rtmp://flashsvr1.amps.ms.mit.edu/6.046/mp4:2017spring/MIT-6.046-lec-mit-0000-2017feb09-1103-L01.mp4</url> 

(我知道尾随标头,它已在我的 bash 脚本中处理)

但是,当我尝试在 bash 脚本中运行相同的命令并将输出保存到变量时,我什么也没得到。仅运行xml=$(curl -s $url)并回显该结果会产生一堆(但不是全部)标头,仅此而已:

<camera id="2" cameraX="960" cameraY="0" thumbnailX="960" thumbnailY="0" name="CAM2" selectedName="LIVE 2 
<camera id="3" cameraX="0" cameraY="540" thumbnailX="0" thumbnailY="540" name="CAM3" selectedName="LIVE 3 
<camera id="4" cameraX="960" cameraY="540" thumbnailX="960" thumbnailY="540" name="CAM4" selectedName="LI 
<fullscreenOutButtonImageOver>fallback/assets/btn_fullscreenOff_selected.png</fullscreenOutButtonImageOve 
<fullscreenOutButtonImageDown>fallback/assets/btn_fullscreenOff_selected.png</fullscreenOutButtonImageDow 
<communityRealOutButtonImageNormal>fallback/assets/buttons/community_selected_up.png</communityRealOutBut 
<communityRealOutButtonImageOver>fallback/assets/buttons/community_over.png</communityRealOutButtonImageO 
<communityRealOutButtonImageDown>fallback/assets/buttons/community_down.png</communityRealOutButtonImageD 
<thumbspositionTopButtonImageNormal>fallback/assets/btn_thumbnailPositionTop.png</thumbspositionTopButton 
<thumbspositionBottomButtonImageNormal>fallback/assets/btn_thumbnailPositionBottom.png</thumbspositionBot 
</settings>ge>fallback/assets/affiche.png</landingImage>>ng</thumbnailActive>Progress>geDown>Down>

有谁知道这可能会发生什么?这真是令人沮丧。谢谢!

答案1

您的数据中有回车符。过滤掉它们:

curl ... | tr -d '\r'

另外,当您回显它时,请引用您的变量:

$ echo "$xml"

或者甚至更好:

$ printf '%s\n' "$xml"

引用可以防止分词。分词发生在命令行上所有未加引号的变量上,并涉及根据 的值将它们行拆分为单词$IFS$IFS默认情况下是制表符、空格符和换行符。

请参阅 shell 手册中的“字拆分”或“字段拆分”。

相关内容