You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中对数组排序并将结果保存到数组变量中?

在Bash中对数组按数字序号排序并保存

首先注意:你原数组的定义存在语法错误,Bash里数组赋值时=两边不能有空格,正确的定义应该是:

array=(Testcase_5_Input_Packets Testcase_3_Input_Packets Testcase_1_Input_Packets Testcase_4_Input_Packets Testcase_2_Input_Packets)

下面提供两种实用的排序实现方法:

方法1:使用sort命令(兼容多数Bash版本)

将数组元素逐行输出后,用sort -V按字符串中的数字逻辑排序,再重新赋值给数组:

sorted_array=($(printf "%s\n" "${array[@]}" | sort -V))

sort -V会自动识别字符串中的数字序列,完美匹配你这种Testcase_N_xxx的命名格式。

要验证排序结果,可执行循环输出:

for item in "${sorted_array[@]}"; do
    echo "$item"
done

输出结果如下:

Testcase_1_Input_Packets
Testcase_2_Input_Packets
Testcase_3_Input_Packets
Testcase_4_Input_Packets
Testcase_5_Input_Packets

方法2:使用Bash内置readarray(Bash 4.3+版本)

如果你的Bash版本是4.3或更高,推荐用readarray结合排序命令,这种方式能安全处理包含空格的数组元素:

readarray -t sorted_array < <(printf "%s\n" "${array[@]}" | sort -V)

补充:直接覆盖原数组

如果不需要保留原数组,可直接将排序结果存回原数组:

# 方式1
array=($(printf "%s\n" "${array[@]}" | sort -V))
# 方式2(更安全)
readarray -t array < <(printf "%s\n" "${array[@]}" | sort -V)

内容的提问来源于stack exchange,提问作者Farah Bayomi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 10:35:35