shell脚本获取目录中个各个服务最新的包

需求

有个目录,里面是存放着各个微服务的各个版本的包,包名格式为:{服务名}-{时间戳}.zip
比如:

需要获取各个服务最新的包名,即:

aad-service-7.35.20190723005668.zip
add-service-7.35.20190723005668.zip
icm-service-7.35.20190724005968.zip

shell怎么写?

#!/bin/bash

# 进入包目录
cd  /data/test/testsvc

# 申明数组
declare -a SVCNAME

# 遍历目录中所有的包
for svc in $(ls)
do
    # 把包名按照时间戳前面的-切割,拿到服务名
    prefix=${svc%-*}
    echo $prefix
    # 把所有服务名放到数组中
    SVCNAME[${#SVCNAME[*]}]=$prefix
done 

# 去重
SVCNAME=($(echo ${SVCNAME[*]} | sed 's/ /\n/g' | sort | uniq))

#各服务最新包数组
LAST_SVC_PKG=()
for ss in ${SVCNAME[*]}
do
    echo "svcname is ${ss[@]}"
    LAST_SVC_PKG[${#LAST_SVC_PKG[*]}]=$(ls | grep ${ss} | sort -r | head -n1) 
done

echo "各个服务最新包名为: ${LAST_SVC_PKG[*]}"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章