如何在Bash中连接数组的元素?

如果我在Bash中有这样一个数组:

FOO=(a b c)

如何用逗号连接元素?例如,生成a、b、c

支持多字符分隔符的100%纯Bash函数是:

函数通过{local d=${1-}f=${2-};如果是移位2;那么printf%s"$f"${@/\/$d};fi;}

比如说,

加入由,a b c#a,b,c
以“,”a b c#a,b,c”加入
以“)|”(“a b c#a)|(b)|(c)连接
通过“%s”a b c#a%s b%s c加入_
通过$'\n'a b c#a<newline>b<newline>c加入您
通过-abc#a-b-c加入你
通过“\'abc\a\b\c”加入\u
通过-n'-e'-e'-n'#-e-n-e-n-n-n-n连接
加入我们#
加入,加入

上面的代码基于@gniourf_gniourf、@AdamKatz、@MattCowell和@x-yuri的思想。它与选项errexitset-e)和nounsetset-u)一起工作

或者,一个只支持单个字符分隔符的更简单的函数是:

函数通过{local IFS="$1"shift;echo"$*"}连接

比如说,

加入由,a“b c”d“a,b c,d
通过/var本地tmp加入#var/local/tmp
以“a,b,c”加入“u”

此解决方案基于Pascal Pilz的原始建议

meleuatdev.to的一篇文章《如何在bash脚本中连接()数组元素》中,可以找到以前提出的解决方案的详细说明

发表评论