如何在Bash中随机拆分逗号分隔的字符串变量为两个无遗漏子变量
Bash随机拆分逗号分隔字符串方案
完整脚本
#!/bin/bash # 原字符串定义 string="1,2,3,4,5,6,7,8" # 切割为数组 IFS=',' read -ra origin_arr <<< "$string" arr_length=${#origin_arr[@]} # 随机打乱数组元素 shuffled_arr=($(shuf -e "${origin_arr[@]}")) # 生成随机拆分位置:取值1到总长度-1,保证两个拆分结果都非空 # 若允许其中一个结果为空,可修改为 split_pos=$((RANDOM % (arr_length + 1))) split_pos=$((1 + RANDOM % (arr_length - 1))) # 拼接为两个逗号分隔的字符串 string_p1=$(IFS=,; echo "${shuffled_arr[*]:0:${split_pos}}") string_p2=$(IFS=,; echo "${shuffled_arr[*]:${split_pos}}") # 结果验证输出 echo "原字符串:${string}" echo "拆分结果1:${string_p1}" echo "拆分结果2:${string_p2}"
运行示例
某次执行输出如下,结果每次运行随机变化:
原字符串:1,2,3,4,5,6,7,8
拆分结果1:6,2,5
拆分结果2:7,1,3,8,4
注意事项
- 脚本依赖
shuf工具实现随机打乱,主流Linux发行版默认预装该工具;macOS环境可先执行brew install coreutils,再将脚本中的shuf替换为gshuf即可运行 - 拆分比例完全随机,两个结果无重复元素,也不会遗漏原字符串中的任意数值
内容的提问来源于stack exchange,提问作者kunal borse
相关产品推荐
相关产品推荐

