如何根据 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
我正在尝试将以下字符串拆分为定界符数组
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