需求
有个目录,里面是存放着各个微服务的各个版本的包,包名格式为:{服务名}-{时间戳}.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[*]}"
image.png
网友评论