【发布时间】:2020-05-14 02:37:07
【问题描述】:
我正在将应用程序转换为新图像,现有命令使用子字符串扩展来设置工件版本,如下所示:mvn clean versions:set -DnewVersion="0.1.$VCSINFO.I${INFO:0:6}.M$OTHER_INFO"。我正在使用默认为 /bin/sh 的 ubuntu 映像,但我无法弄清楚如何在 bourne shell 中执行等效操作,或者切换 shell 以运行命令。我知道 bash 已安装,因为我可以在 /etc/shells 中看到它。
我尝试使用RUN ['/bin/bash', '-c', '...'],但我可以看到它只是像The command '/bin/sh -c ['/bin/bash', '-c',... 那样运行该命令。将此功能转换为新图像的最佳方法是什么?
【问题讨论】:
-
您是否费心查看手册页?还是您只是将这些 shell 作为示例,并且真的很感兴趣是否可以在与 Posix 兼容的 shell 中使用此功能(正如您的 shell 标签所建议的那样)?后一种情况,你可以在POSIX standard找到答案。
-
如果您尝试使用
RUN、CMD或ENTRYPOINT的 JSON 数组语法,它必须是带双引号的有效 JSON 数组。${A:B:C}不是标准的 Bourne shell 变量扩展之一;它们列在@user1934428 的链接中。
标签: linux bash shell docker ubuntu