我正在尝试运行此脚本以通过RightScale的API执行导入操作,但它会继续为第二个CURL操作报告“BAD请求400”,并且看起来URL未正确形成。我也尝试将POST 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>
答案 0 :(得分:0)
事实证明我的Debian Squeeze版本的bash(4.1.5)正在向$ temp变量插入一个回车'/ r'字符。
当我在Cygwin for Windows上运行相同的脚本并且脚本运行没有问题时,我想到了这一点。还要感谢@Mark Setchell提出的“-xv”标志,没有这个标志,我从来没有想过原因。
这是Debian v / s Cygwin上“echo $ temp”行之间的比较:
Debian(bash-4.1.5):
++ echo $'184605\r'
Cygwin(bash-4.1.11):
+ echo 184605
为什么会这样?我无法回答这个问题,但我很高兴我发现它与Bash版本本身有关。谢谢大家!