需求
有個目錄,裏面是存放着各個微服務的各個版本的包,包名格式爲:{服務名}-{時間戳}.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[*]}"