如何根据 Docker 中的分隔符拆分环境变量

How to split a environment variable based on delimiter in Docker

我正在尝试将以下字符串拆分为定界符数组

str="We;Welcome;You;On;Javatpoint"

我设法在 bash 中找到了解决方案,即

#!/bin/bash  
#Example for bash split string by another string  
  
str="We;Welcome;You;On;Javatpoint"  
delimiter=";"  
s=$str$delimiter  
array=();  
while [[ $s ]];  
do  
array+=( "${s%%"$delimiter"*}" );  
s=${s#*"$delimiter"};  
done;  
declare -p array

结果

array=([0]="We" [1]="Welcome" [2]="You" [3]="On" [4]="Javatpoint")

我需要将字符串拆分为 Dockerfile 中的数组。

DOCKERFILE:

> FROM python:3.7-slim
> 
> ENV IN="We;Welcome;You;On;Javatpoint"

让 bash 进行拆分。

IFS=';' read -r -a array <<<"str"

或类似于 readarray 用于多行变量。

inside Dockerfile

如果您想使用 bash 功能,请首先确保您正在运行 Bash。 RUN 默认情况下 dockerfile 中的命令 sexecute /bin/sh(请参阅 dockerfile 参考文档)可能不是 Bash 并且可能不支持 Bash 数组。

在这种特定情况下,为了 /bin/sh 兼容,将 ; 替换为换行符 (tr) 并将其作为换行符分隔流读取,或者如果存在则使用分词没有其他空格。参见 https://mywiki.wooledge.org/BashFAQ/001