我的 bash 代碼就是這樣。我正在嘗試學習 docker 但也是一個 bash 腳本的新手。我為 read 命令輸入了一些簡單的東西,比如 google.com,但它給了我 curl: (3) URL using bad/illegal format or missing URL。有誰知道我做錯了什么?
docker exec -it missingDependencies sh -c "echo 'Input Website:'; read website; echo 'Searching..'; sleep 1; curl http://$website;"
uj5u.com熱心網友回復:
像這樣呼叫(沒有域)時,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 what $website" 時, $website 變數將從您當前的環境中獲取,而不是從 docker 環境(來自 read 網站)中獲取。為了抵消 $website 變數被插入的情況,您可以使用單引號,如 sh -c 'read foo; echo $foo',或轉義美元符號: sh -c "read foo; echo \$foo"
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/341787.html
