Linux 子串扩展可以在dash shell或bourne shell中使用吗?

Linux 子串扩展可以在dash shell或bourne shell中使用吗?,linux,bash,shell,docker,ubuntu,Linux,Bash,Shell,Docker,Ubuntu,我正在将一个应用程序转换为一个新图像,现有命令使用子字符串扩展来设置工件版本,如下所示:mvn clean versions:set-DnewVersion=“0.1.$VCSINFO.I${INFO:0:6}.m$OTHER_INFO”。我使用的ubuntu映像默认为/bin/sh,我不知道如何在bourne shell中执行等效操作,或者切换shell来运行该命令。我知道安装了bash,因为我可以在/etc/shells中看到它 我尝试使用RUN['/bin/bash'、'-c'、'…']但

我正在将一个应用程序转换为一个新图像,现有命令使用子字符串扩展来设置工件版本,如下所示:
mvn clean versions:set-DnewVersion=“0.1.$VCSINFO.I${INFO:0:6}.m$OTHER_INFO”
。我使用的ubuntu映像默认为
/bin/sh
,我不知道如何在bourne shell中执行等效操作,或者切换shell来运行该命令。我知道安装了bash,因为我可以在
/etc/shells
中看到它


我尝试使用
RUN['/bin/bash'、'-c'、'…']
但是我可以看到它只是像
command'/bin/sh-c一样运行那个命令['/bin/bash'、'-c'、…
将此功能转换为此新映像的最佳方式是什么?

您可以通过两种方式运行bash命令,即使是从sh:将字符串'/bin/bash path/to/your/cmd'传递到sh的-c选项,或者在cmd中设置x位,并将其作为cmd a
#!/bin/bash
中的第一行

因此,在您的设置中,我将尝试运行['/bin/bash/path/to/your/cmd']或只运行['/path/to/your/cmd']并确保
cmd
具有上面提到的
#!
行,或复杂但故障安全的-编写一个sh包装脚本,然后依次调用bash脚本。因此,如果此包装脚本被称为
/path/to/your/cmdwrapper.sh
,则其内容将是

:
/bin/bash/path/to/your/cmd

您是否费心查看手册页?或者您是否仅以这些shell为例,并且对是否可以在与Posix兼容的shell中使用此功能非常感兴趣(如您的shell标签所示)?在后一种情况下,您可以在中找到答案。如果您试图使用
RUN
CMD
ENTRYPOINT
的JSON数组语法,则它必须是带双引号的有效JSON数组。
${a:B:C}
不是标准Bourne shell变量扩展之一;它们列在@user1934428的链接中。