Bash 从脚本调用时返回HTTP代码503

Bash 从脚本调用时返回HTTP代码503,bash,curl,Bash,Curl,我尝试调用一些restapi,并使用curl获取生成的HTTP代码。如果在终端I类型中: curl -s -o /dev/null -I -w '%{http_code}' -X POST 'http://localhost/gitlab/api/v3/projects?private_token=my_private_token&name=blabla' -H 'Content-Length: 0' 它工作并返回HTTP代码201(“已创建”)。现在,我尝试在bash脚本中使用此命令

我尝试调用一些restapi,并使用
curl
获取生成的HTTP代码。如果在终端I类型中:

curl -s -o /dev/null -I -w '%{http_code}' -X POST 'http://localhost/gitlab/api/v3/projects?private_token=my_private_token&name=blabla' -H 'Content-Length: 0'
它工作并返回HTTP代码
201
(“已创建”)。现在,我尝试在bash脚本中使用此命令,将url的一部分替换为变量:

echo "Enter base URL :"
read gitlab_url # Here I type 'http://localhost/gitlab', to generate the same URL as in first code snippet
code_status=$(curl -s -o /dev/null -I -w '%{http_code}' -X POST '$gitlab_url/api/v3/projects?private_token=my_private_token&name=blabla' -H 'Content-Length: 0')
echo "$code_status"
然后它返回HTTP代码
503
(“服务不可用”)。要查看“硬编码”URL和生成的URL之间是否存在任何差异,我会:

echo "curl -s -o /dev/null -I -w '%{http_code}' -X POST '$gitlab_url/api/v3/projects?private_token=my_private_token&name=blabla' -H 'Content-Length: 0'"
# Output :
curl -s -o /dev/null -I -w '%{http_code}' -X POST 'http://localhost/gitlab/api/v3/projects?private_token=my_private_token&name=blabla' 'Content-Length: 0'

如果我直接在终端中执行,它会工作并返回我
201
。那么:如果我在脚本中使用这个命令,为什么会失败呢?我遗漏了什么吗?

试着以
bash-x script.sh
的形式运行它,这是一个代理问题。如果我使用
curl-v….
我可以看到以下输出:

当直接在终端中键入
curl
时,我有:

* About to connect() to localhost port 80 (#0)
*   Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 80 (#0)
当我在bash脚本中使用它时,我得到:

* About to connect() to proxy proxy.my.company port xxx (#0)
*   Trying xx.xx.xx.xx... connected
* Connected to proxy.my.company (xx.xx.xx.xx) port xxx (#0)
因此,为了修复它,我在脚本的顶部添加了以下内容:

export no_proxy=localhost,127.0.0.1
export http_proxy=""

我非常惊讶必须这样做,因为我已经有了一个环境变量
no_proxy
,它已经引用了
localhost
127.0.0.1

bash-x
对我没有帮助,但是使用debug mod(on curl)的想法对我有帮助。谢谢