所以情节如下:
我需要编写一个自动脚本,从目录中选择jar文件。但jar文件将定期用新的jar文件替换
例如:XXX / YYY / server-sdk-01.00.00-000080.000055.e0eb521.jar
server-sdk部分一直是常量,但版本编号的其余部分会发生变化。
如何在此方案中读取文件名并将其保存到变量中。
我试过
fspec=XXX/YYY/server-sdk-*.jar
filename="${fspec##*/}" # get filename
dirname="${fspec%/*}" # get directory/path name
但是在这里我只得到server-sdk - * .jar作为文件名,我希望它是server-sdk-01.00.00-000080.000055.e0eb521.jar。
答案 0 :(得分:1)
Double command substitunion
在这里拯救shell扩展。考虑这个脚本
> set +f
> fspec=XXX/YYY/server-sdk-*.jar
> f=$(echo $(echo "$fspec"))
> echo "$f"
XXX/YYY/server-sdk-01.00.00-000080.000055.e0eb521.jar
> filename="${f##*/}"
> echo "$filename"
server-sdk-01.00.00-000080.000055.e0eb521.jar
> dirname="${f%/*}"
> echo "$dirname"
XXX/YYY
答案 1 :(得分:0)
简短的回答是使用echo
强制扩展文件名:
fspec=$(echo XXX/YYY/server-sdk-*.jar)
如果此目录中有多个server-sdk - * .jar文件,您可以执行此操作以仅选择最新的:
fspec=$(ls -t XXX/YYY/server-sdk-*.jar | head -1)