2012-05-31 105 views
3

所以我新來捲曲並試圖編寫一個bash腳本,我可以運行該下載文件。所以我開始通過身份驗證,然後做一個POST來請求下載。我得到一個Foo_ID,我在其中使用bash解析並設置參數。然後我嘗試通過下載URL來使用獲取某些Foo數據。我遇到的問題是,只要我傳入從POST響應中分析的參數,我什麼也得不到。這是我正在做的一個例子。curl命令無法傳遞bash參數

#!/bin/bash 
curl -b cookies -c cookies -X POST @login_info -d "https://foo.bar.com/auth" 
curl -b cookies -c cookies -X POST @Foo_info -d "https://foo.bar.com/foos" > ./tmp/stuff.t 
myFooID=`cat ./tmp/stuff.t |grep -Po '"foo_id:.*?",'|cut -d '"' -f 4` 
curl -b cookies -c cookies "http://foo.bar.com/foo-download?id=${myFooID}" > ./myFoos/Foo1.data 

我有echo'd myFooID以確保它是正確的,它是。我也迴應了「https://foo.bar.com/foo-download?id=${myFooID}」,它正確顯示我需要的網址。任何人都可以幫我解決這個問題,就像我說過的,我是使用curl和使用bash命令的一些小生鏽手段。

+0

您使用參數的方式似乎是正確的,您是否也可以回顯curl命令的結果? – xvatar

+0

當我回應'最後的捲曲命令的結果它只是空白。 – Andrew

+0

確保在回聲時引用變量。執行'echo'$ myFooID「'看看它是否正常。然後執行'echo -n「$ myFooID」| hexdump -C'並查看十六進制值是否顯示任何意外字符。如果你手工發佈命令,但是用字面而不是變量替換ID,它是否工作?你不需要'cat','grep'接受文件名作爲參數。您應該可以使用變量而不是臨時文件。使用'$()'而不是反引號。這些建議雖然不能解決您的問題。 –

回答

2

所以我解決了這個問題。問題出在爲Foo做我的帖子後,我沒有給我足夠的時間讓我的foo在嘗試下載之前創建。我在最後兩個捲曲命令之間添加了一個睡眠命令,現在它完美地工作。我想感謝Dennis Williamson幫助我清理我的代碼,這使我瞭解了我的問題。我在我的桌子上爲他創造了一座神殿。

+0

對於任何希望在'-d'發佈數據中執行相同操作的人:http://stackoverflow.com/questions/4152388/expanding-variable-in-curl – pulkitsinghal