获取curl:(3) URL使用错误/非法格式



我的bash代码就是这样。我试图学习docker,但也是一个新手与bash脚本。我输入一些简单的东西,比如google.com的读取命令,但它给了我curl:(3) URL使用坏/非法格式或缺失的URL。有人知道我哪里做错了吗?

docker exec -it missingDependencies sh -c "echo 'Input Website:'; read website; echo 'Searching..'; sleep 1; curl http://$website;"

Curl将在像这样调用时给出警告(不带域):

curl http://

让我们定义一个具有旋度的图像。

$ cat Dockerfile 
FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -y curl

并组装:

docker build .  -t foobar

现在我们可以运行脚本了。

$ docker run -it --rm foobar /bin/sh -c 
"set -x; echo 'Input Website:'; read website; echo 'Searching..'; curl https://$website ;"
+ echo Input Website:
Input Website:
+ read website
google.com
+ echo Searching..
Searching..
+ curl https://

解决方案

docker run -it --rm foobar /bin/sh -c 
"set -x; read -p 'which website?: ' website; echo 'Searching..'; curl https://$website;"
+ read -p which website?:  website
which website?: google.com
+ echo Searching..
Searching..
+ curl https://google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>

问题是,当你运行bash -c "echo任何$website", $website变量将从您当前的环境,而不是从docker环境(从读取网站)。为了避免$website变量被插入,你可以使用单引号,比如sh -c 'read foo;输出$foo',或者转义美元符号:sh -c "read foo;回声 foo&quot美元;

相关内容

  • 没有找到相关文章

最新更新