#!/bin/bash
docker exec -i ubuntu-lgx bash << EOF
echo "test file" >> /inner.txt
ls -l /inner.txt
content=$(cat /inner.txt)
echo ${conent}
EOF
我想在宿主机用脚本进入 docker 的容器内,然后创建了一个文件,并 cat 出来文件的内容,赋给一个变量,然后离开容器。
但是执行的时候却提示,找不到此文件。用ls
查看文件确实是存在的。
运行结果:
cat: /inner.txt: No such file or directory
-rw-r--r--. 1 root root 58 Nov 14 11:51 /inner.txt
请问各位老哥,这种写法哪里有什么不妥吗?
1
zhuisui 2020-11-14 20:20:04 +08:00
是 << EOF 的部分在容器外被执行了吗
|
2
codehz 2020-11-14 20:21:18 +08:00 1
你没发现 cat /inner.txt 是在 host 上跑的吗
heredoc 里$()也会被解析, 除非你用 << 'EOF' xxx EOF 这样的格式 |
3
adminpassword 2020-11-14 20:53:57 +08:00
可以在宿主机上创建好文件,然后 docker cp 到容器里
|
4
liuguangxuan OP |