如果我在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的思想。它与选项errexit(set-e)和nounset(set-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脚本中连接()数组元素》中,可以找到以前提出的解决方案的详细说明