我有一个守护进程的Docker容器。我可以像这样在容器中作为当前用户一次执行多个bash命令:
docker exec -it <container_ID> /bin/bash -c "pwd; cd src; pwd"
我现在需要通过bash脚本执行此操作。脚本很简单:
#!/usr/bin/env bash
# Here I do stuff to acquire the container_ID
docker exec -it <container_ID> -user $(id -u):$(id -g) $@
然后我将参数传递给脚本,如下所示:
./run_in_container.sh /bin/bash -c "pwd; cd src; pwd"
哪个不能按预期工作,因为引号被剥离,而docker exec得到的是/bin/bash -c pwd; cd src; pwd
。所以我尝试以下方法:
./run_in_container.sh /bin/bash -c '"pwd; cd src; pwd"'
我收到此错误消息:
cd: -c: line 0: unexpected EOF while looking for matching `"'
cd: -c: line 1: syntax error: unexpected end of file
这样做的正确方法是什么?
我怀疑这是非常重要的信息,但我使用的是Gnu bash 4.3.11。
答案 0 :(得分:2)
在$@
周围使用引号:
docker exec -it <container_ID> -user $(id -u):$(id -g) "$@"