Arrays 使用Bash对数组中的日期进行排序

Arrays 使用Bash对数组中的日期进行排序,arrays,bash,shell,sorting,Arrays,Bash,Shell,Sorting,我正在为自动化编写bash脚本,但似乎找不到对包含日期的数组进行排序的最佳方法 示例阵列: dates=('180212', '110112', '040312') 输出应如下所示: 110112 180212 040312 我尝试使用排序,但它只是将其排序为一个整数 有人能建议最好的使用方法吗?它也不一定要排序,我只需要数组中最早的日期 谢谢 您可以交换年份和日期数字,并使用排序对结果值进行排序。然后取最早的值并撤消交换。您可以像这样使用sed进行交换: echo 112233 | sed

我正在为自动化编写bash脚本,但似乎找不到对包含日期的数组进行排序的最佳方法

示例阵列:

dates=('180212', '110112', '040312')
输出应如下所示:

110112
180212
040312
我尝试使用
排序
,但它只是将其排序为一个整数

有人能建议最好的使用方法吗?它也不一定要排序,我只需要数组中最早的日期


谢谢

您可以交换年份和日期数字,并使用
排序
对结果值进行排序。然后取最早的值并撤消交换。您可以像这样使用
sed
进行交换:

echo 112233 | sed 's/\(..\)\(..\)\(..\)/\3\2\1/'
这将前两位与后两位交换

bash脚本示例:

dates="180212 110112 040312"
min="999999"
for d in $dates
do
    rdate="${d:4}${d:2:2}${d:0:2}"
    if [ "$min" -gt "$rdate" ]
    then
        min=$rdate
    fi
done

min="${min:4}${min:2:2}${min:0:2}"
echo $min
仅适用于ddmmyy日期。我们的想法是以yymmdd格式反转日期,然后找到最小值。在bash中完成这项工作。但并不漂亮