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[*]}"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章