此问题在此处已有答案:
Escape $ in variable passed to docker run command(1个答案)
2天前关闭。
当我使用Docker时,我想通过docker exec
在主机容器中进行一些操作,我遇到了这个问题。
我想这样做,但错误:
# in host
docker exec test-container bash -c "for i in `ls /folder-in-docker`; do someoperationon($i); done"
我用一个命令简化了这个问题:
# host environment
docker exec test-container bash -c "for i in `ls /`; do echo $i; done"
>! bash: -c: line 2: syntax error near unexpected token `boot'
>! bash: -c: line 2: `boot
我需要ls /
中i的代码“;重复$i;done”在容器中执行,但ls /
在主机环境中执行。在主机环境中,结果ls /
为
bin boot cdrom dev etc home lib lib32 lib64 libx32 lost+found media mnt opt proc root run sbin snap srv sys tmp usr var
我尝试了其他方法,如$(ls /)
,但也出现错误:
docker exec test bash -c "for i in $(ls /); do echo $i; done"
>! bash: -c: line 2: syntax error near unexpected token `boot'
>! bash: -c: line 2: `boot'
1条答案
按热度按时间1aaf6o9v1#
使用单引号。
最好还是让巴斯来处理。
注意:不要解析ls,不要使用反勾号,用shellcheck检查你的脚本。