首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash命令作为Bash命令参数

Bash命令作为Bash命令参数
EN

Stack Overflow用户
提问于 2016-12-13 10:33:34
回答 1查看 59关注 0票数 2

我有一个去码头的集装箱。作为容器中的当前用户,我可以一次执行多个bash命令,如下所示:

代码语言:javascript
复制
docker exec -it <container_ID> /bin/bash -c "pwd; cd src; pwd"

我现在需要通过bash脚本来完成这个任务。脚本很简单:

代码语言:javascript
复制
#!/usr/bin/env bash
# Here I do stuff to acquire the container_ID
docker exec -it <container_ID> -user $(id -u):$(id -g) $@

然后我将参数传递给脚本,如下所示:

代码语言:javascript
复制
./run_in_container.sh /bin/bash -c "pwd; cd src; pwd"

这不像预期的那样工作,因为引号被去掉了,而docker得到的是/bin/bash -c pwd; cd src; pwd。因此,我尝试以下几点:

代码语言:javascript
复制
./run_in_container.sh /bin/bash -c '"pwd; cd src; pwd"'

我得到了一条错误信息:

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-13 10:41:48

$@周围使用引号

代码语言:javascript
复制
docker exec -it <container_ID> -user $(id -u):$(id -g) "$@"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41118914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档