首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >如何将Bash数组的元素连接为分隔符分隔的字符串

如何将Bash数组的元素连接为分隔符分隔的字符串

作者头像
程序熵
发布于 2023-11-06 15:43:39
发布于 2023-11-06 15:43:39
3K0
举报
文章被收录于专栏:技术汇技术汇

问:

如果我在 Bash 中有如下数组:

代码语言:javascript
复制
FOO=( a b c )

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

答:

如果分隔符为单个字符,

方法一:

代码语言:javascript
复制
function join_by {
  local IFS="$1"; shift; echo "$*"; 
}

测试示例如下:

代码语言:javascript
复制
join_by , a "b c" d #output: a,b c,d
join_by / var local tmp #output: var/local/tmp
FOO=( a b c )
join_by , "${FOO[@]}" #output: a,b,c

方法二:

代码语言:javascript
复制
#!/bin/bash

foo=('foo bar' 'foo baz' 'bar baz')
bar=$(printf ",%s" "${foo[@]}")
bar=${bar:1}

echo $bar

测试结果如下:

如果分隔符为多个字符,

可用如下代码:

代码语言:javascript
复制
function join_by {
  local d=${1-} f=${2-}
  if shift 2; then
    printf %s "$f" "${@/#/$d}"
  fi
}

测试示例及结果如下:

参考:

  • stackoverflow question 1527049
  • https://www.gnu.org/software/bash/manual/bash.html#Shell-Parameter-Expansion
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档