2014-02-06 112 views
0

我試圖通過RightScale的API運行此腳本以進行導入操作,但它爲第二個CURL操作持續報告「BAD請求400」,並且它看起來像URL isn' t形成正確。我也嘗試把POST URL放在雙引號中,但是這並沒有改變結果。Bash腳本:幫助找到bug

AccountList.txt和TemplateList.txt都有帳號和模板號碼,每行一個。爲了調試,我只在每個文件中分別放置一個賬號和模板號。

請幫我理解這段代碼有什麼問題。我猜這是一些小事,但我不明白那是什麼:

cat "AccountList.txt" | while read acc ; do 
     rm scriptcookie 
     curl -i -H 'X-API-VERSION:1.5' -c scriptcookie -d email="[email protected]" -d password="[email protected]" -X POST -d account_href="/api/accounts/$acc" https://my.rightscale.com/api/sessions 

     cat "TemplateList.txt" | while read temp ; do 
       echo $temp 
       curl -i -H 'X_API_VERSION:1.5' -b ./scriptcookie -X POST https://my.rightscale.com/api/publications/$temp/import 

     done 
echo "Done for Account:" $acc  
done 

這是我看到的輸出:

<html> 
<head><title>400 Bad Request</title></head> 
<body bgcolor="white"> 
<center><h1>400 Bad Request</h1></center> 
<hr><center>nginx/1.4.2</center> 
</body> 
</html> 
+0

我在想我的機器上有什麼與BASH相關的東西。 我只是試圖在腳本中回顯整個CURL行: echo「curl -i -H'X_API_VERSION:1.5'-b ./scriptcookie -X POST https://my.rightscale.com/api/publications/$ temp/import「 我把它作爲輸出: /import -H'X_API_VERSION:1.5'-b ./scriptcookie -X POST https://my.rightscale.com/api/publications/184605 – urover

+2

嘗試在shebang之後添加「-xv」標誌以協助調試,如此「#!/ bin/bash -xv」 –

+0

@MarkSetchell。我在shebang中添加了「-xv」,它會打印整個腳本,然後顯示:http://i60.tinypic.com/292m9ns.png 謝謝! – urover

回答

0

事實證明我的版本的bash(4.1 .5)從Debian Squeeze向$ temp變量插入回車'/ r'字符。

當我在Cygwin for Windows上運行相同的腳本並且腳本運行沒有問題時,我想到了這一點。還要感謝@Mark Setchell提供的「-xv」標誌,沒有這個標誌,我從未想出原因。

這是在Debian V/S的Cygwin的 「回波$ TEMP」 線之間的比較:

的Debian(bash的-4.1.5):

++ echo $'184605\r' 

Cygwin的(的bash-4.1.11 ):

+ echo 184605 

爲什麼會出現這種情況?我無法回答這個問題,但我很高興我明白這是與Bash版本本身有關。謝謝大家!