[英]How to enter docker container use shell script and do something?
我想進入我的容器並做一些事情,然后離開這個容器。
#!/bin/bash
docker exec -i ubuntu-lgx bash << EOF
echo "test file" >> /inner.txt
ls -l /inner.txt
content=`cat /inner.txt`
echo ${conent}
# do something else
EOF
當我運行這個腳本時,bash 告訴我文件不存在。但是ls
可以 output 文件的屬性。
cat: /inner.txt: No such file or directory
-rw-r--r--. 1 root root 58 Nov 14 11:51 /inner.txt
我哪里錯了? 以及如何解決?
問題是您沒有保護您的“此處”文檔免受本地 shell 擴展的影響。 當你寫:
#!/bin/bash
docker exec -i ubuntu-lgx bash << EOF
content=`cat /inner.txt`
EOF
cat /inner.txt
在您的本地系統上運行,而不是在遠程系統上運行。 解析此處文檔的內容以進行變量擴展和其他 shell 功能。
為了防止這種情況,請這樣寫:
#!/bin/bash
docker exec -i ubuntu-lgx bash << 'EOF'
echo "test file" >> /inner.txt
ls -l /inner.txt
content=`cat /inner.txt`
echo ${content}
# do something else
EOF
'EOF'
中的單引號是向 shell 逐字解釋此處文檔的信號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.