2017-04-08 46 views
-3

创建一个行,逗号分隔字符串我有我的Dockerfile命令,我需要运行,这需要一个逗号分隔的字符串作为像这样内Dockerfile

RUN $APPDIR/bin/install.sh --name arg1,arg2 

参数但是,同样的理由,在多行写apt-get(你可以看到在源代码控制更清晰的差异),我愿做这样的事情

RUN args=(\ 
    arg1 \ 
    arg2 \ 
) && args=$(printf "%s," "${args[@]}") \ 
    && $APPDIR/bin/install.sh --name "${args%,}" 

,当在bash跑了,大家可以看到我拿到逗号分隔的字符串。

$ args=(\ 
    arg1 \ 
    arg2 \ 
) && args=$(printf "%s," "${args[@]}") \ 
    && echo "${args%,}" 
arg1,arg2 

但是,Dockerfile RUN命令必须符合POSIX标准,并且POSIX shell不支持数组。
我基本上得到Unsupported command: "("

这将是很好,如果任何人都可以提供一个更清晰的方式来声明一个列表,并逗号加入。

+0

未来downvoters:请**评论**或添加自己的答案 –

回答

0

找出替代使用字符串替换。

RUN args=' \ 
    arg1, \ 
    arg2 \ 
    ' && $APPDIR/bin/install.sh --name $(echo $args | tr -d '[[:space:]]')