Shell-Script

cURL 響應未顯示 XML 正文

  • February 13, 2017

我正在嘗試編寫一個 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>

有誰知道這可能會發生什麼?這很令人沮喪。謝謝!

您的數據中有輸入。過濾掉它們:

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

另外,在您回顯它時引用您的變數:

$ echo "$xml"

甚至更好:

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

引用可以防止分詞。單詞拆分發生在命令行上所有未引用的變數上,並且涉及根據$IFS. $IFS預設情況下是一個製表符和一個空格字元和一個換行符。

請參閱您的 shell 手冊中的“字拆分”或“欄位拆分”。

引用自:https://unix.stackexchange.com/questions/344419