我正在尝试运行此脚本以通过Rightscale的API进行导入操作,但是对于第二个卷曲操作,它一直在报告"不良请求400",并且看起来像URL ISN正确形成。我还尝试将帖子URL放入双引号,但这并没有改变结果。
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="emailid@company.com" -d password="p@sswd" -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>
它发现我从debian squeeze的bash(4.1.5)的版本插入了托架返回'/r'的字符,以$ temp变量。
当我在cygwin上使用相同的脚本用于Windows,并且脚本毫无问题地运行时,我弄清楚了这一点。还要感谢@mark setchell提出的" -xv"标志,否则我从未弄清楚原因。
这是Debian V/S Cygwin上的" Echo $ temp"线的比较:
debian(bash-4.1.5):
++ echo $'184605r'
cygwin(Bash-4.1.11):
+ echo 184605
为什么这样?我无法回答,但是我很高兴我发现这与Bash版本本身有关。感谢所有!