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

 

001、 方法1

[root@pc1 test]# ls
test.sh
[root@pc1 test]# cat test.sh          ## 测试程序
#!/bin/bash

function join_by {                    ## 定义函数
  local IFS="$1"                      ## IFS定义输入分隔符, 其中local关键字限制变量的作用域为函数的内部
  shift                               ## shift表示位移
  echo "$*"                           ## $*是shell脚本内部变量,用于表示shell脚本的所有参数
}

FOO=(a b c)                           ## 定义序列数组
join_by , "${FOO[@]}"                 ## 调用函数,第一个参数为,号, 第二个参数为序列数组FOO的作用元素值
[root@pc1 test]# bash test.sh         ## 程序输出结果
a,b,c

 

可以利用上面的函数将数组的元素使用不同的分隔符进行连接, 如下:

[root@pc1 test]# ls
test.sh
[root@pc1 test]# cat test.sh         ## 测试函数
#!/bin/bash

function join_by {
  local IFS="$1"
  shift
  echo "$*"
}

FOO=(a b c)
join_by - "${FOO[@]}"               ## 这里函数调用的时候,第一个参数为-号,也就是输入分隔符
[root@pc1 test]# bash test.sh       ## 执行程序
a-b-c

 

002、 方法2

[root@pc1 test]# ls
test.sh
[root@pc1 test]# cat test.sh           ## 测试程序
#!/bin/bash

foo=(a b c)                            ## 定义数组
bar=$(printf ",%s" "${foo[@]}")        ## 利用printf函数格式化功能,在数组的每一个元素前增加,号
bar=${bar:1}                           ## 利用字符串切片,去掉开头的,号

echo $bar                              ## 输出连接后的字符串
[root@pc1 test]# bash test.sh
a,b,c

 

 

参考:

01、https://mp.weixin.qq.com/s?__biz=Mzg4ODA5NDEwNw==&mid=2247484258&idx=1&sn=f0ed7fc66f88b8e3fa525fc625397da6&chksm=cf812f96f8f6a68092f86e76e0647e9a8846489f14b9ae4fd8a8ba4754d46467f6904f728205&mpshare=1&scene=23&srcid=1105JuuwIOvnyDXywQpU12wQ&sharer_shareinfo=08a4e37eb87ef12d6289032dbd2e765c&sharer_shareinfo_first=08a4e37eb87ef12d6289032dbd2e765c#rd

posted @ 2023-11-05 16:35  小鲨鱼2018  阅读(88)  评论(0编辑  收藏  举报