如何使用Bash拼接数组除首元素外的元素并修改分隔符
Bash分隔符转换与变量拆分实现脚本
方法1:纯Bash原生实现(无外部工具依赖,兼容性好)
#!/bin/bash # 原始输入变量 InputList="Item1,Item2,Item3,....,ItemN" # 将逗号分隔的字符串读取为数组 IFS=',' read -ra input_arr <<< "$InputList" # 提取第一个元素赋值给NewList1 NewList1="${input_arr[0]}" # 处理剩余元素:移除第一个元素后用分号拼接 unset input_arr[0] NewList2=$(IFS=';'; echo "${input_arr[*]}") # 按预期格式输出结果 echo "NewList1=\"$NewList1\"" echo echo "NewList2=\"$NewList2\""
方法2:借助sed实现(代码更简洁)
#!/bin/bash # 原始输入变量 InputList="Item1,Item2,Item3,....,ItemN" # 提取第一个元素(删除第一个逗号及之后的所有内容) NewList1=$(sed 's/,.*//' <<< "$InputList") # 先删除开头到第一个逗号的内容,再将所有逗号替换为分号 NewList2=$(sed 's/^[^,]*,//; s/,/;/g' <<< "$InputList") # 按预期格式输出结果 echo "NewList1=\"$NewList1\"" echo echo "NewList2=\"$NewList2\""
注意事项
- 若原始
InputList仅包含1个元素,NewList2会为空,可根据业务需要补充判空逻辑 - 上述实现默认元素本身不包含逗号,若元素存在逗号需要提前做转义适配
内容的提问来源于stack exchange,提问作者NewKidOnTheBlock
相关产品推荐
相关产品推荐

