gpt4 book ai didi

linux - curl : (3) URL using bad/illegal format

转载 作者:行者123 更新时间:2023-12-04 18:42:51 24 4
gpt4 key购买 nike

我的 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://
让我们定义一个有 curl 的图像。
$ 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 whatever $website"时,$website 变量将从您当前的环境中获取,而不是从 docker 环境中获取(来自读取的网站)。为了抵消 $website 变量被插值,您可以使用单引号,例如 sh -c 'read foo; echo $foo',或转义美元符号:sh -c "read foo; echo\$foo"

关于linux - curl : (3) URL using bad/illegal format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69763806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com