包含参数的curl命令的Bash脚本问题

时间:2013-11-21 13:43:52

标签: bash curl

我正在运行带有curl命令的bash脚本。 我从属性文件中读取了用户名,密码和URL。 但是当命令执行时,响应会给出一个错误,指出您无权访问此页面。 我打印出整个curl命令,这是正确的。

以下是代码的一部分:

这让我回答说未经授权:

curl -u $USERNAMEVAL:$PWDVAL $URLVAL

这甚至可以从bash程序中完美运行:

curl -u test\\test:test www.blah.com

可能是什么问题?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

当我遇到Bash shell脚本中的命令失败的情况时,我认为相同的命令是相同的参数,当我手动运行它时,我怀疑参数值或参数引用的问题。

作为隔离问题的第一步,我建议在行

之前
curl -u $USERNAMEVAL:$PWDVAL $URLVAL

你添加了诸如

之类的东西
echo "curl -u $USERNAMEVAL:$PWDVAL $URLVAL"

甚至(非常清楚):

echo "\$USERNAMEVAL(${#USERNAMEVAL}): \"$USERNAMEVAL\""
echo "\$PWDVAL(${#PWDVAL}): \"$PWDVAL\""
echo "\$URLVAL(${#URLVAL}): \"$URLVAL\""
echo "curl -u $USERNAMEVAL:$PWDVAL $URLVAL"

这将打印用于构造curl命令的每个变量的名称,长度和值。

E.g:

#!/bin/bash
USERNAMEVAL='test\\test'
PWDVAL='test'
URLVAL='www.blah.com'

echo "\$USERNAMEVAL(${#USERNAMEVAL}): \"$USERNAMEVAL\""
echo "\$PWDVAL(${#PWDVAL}): \"$PWDVAL\""
echo "\$URLVAL(${#URLVAL}): \"$URLVAL\""
echo "curl -u $USERNAMEVAL:$PWDVAL $URLVAL"

打印:

$USERNAMEVAL(10): "test\\test"
$PWDVAL(4): "test"
$URLVAL(12): "www.blah.com"
curl -u test\\test:test www.blah.com