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

浙公网安备 33010602011771号