#!/bin/sh
#set就是当命令以非零状态退出时,则退出shell。主要作用是,当脚本执行出现意料之外的情况时,立即退出,避免错误被忽略,导致最终结果不正确
set -e #${JOB_NAME}=$1 ${BUILD_NUMBER}=$2 buidNo=$2
#let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量。如果表达式中包含了空格或其他特殊字符,则必须引起来。语法:let a=5+4
let
buidNo=buidNo-10
#cd /data/soft/jenkins/jobs/$1/builds/ #這是114机器的路径
cd /data/jenkins-read/jobs/$1/builds
#rm 用户可以用rm命令删除不需要的文件。该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是断开了链接,原文件保持不变。
# -r/R --recursive 同时删除该目录下的所有目录层 # -f --force 略过不存在的文件,不显示任何信息,强制删除
rm -fr ${buidNo}
cp -r newBuild ${buidNo}
ln -s newBuild $2
# maxdepth 指定遍历搜索的最大深度
# -mtime+1
#表示文件修改时间为大于1天的文件,即距离当前时间2天(48小时)之外的文件这也能解释了,为什么6号22点生成的这个文件为什么没有输出出来这里-##time +1 为什么是48小时以外,而不是24小时以外呢,因为n只能是整数,比1大的下一个整数是2,所以是48小时以外的 #-exec command:command 为其他指令,-exec后面可再接额外的指令来处理搜寻到的结果。
#“rm -rf /”意味着擦除根路径“/”下挂载的所有内容而无需询问 #{} 对一串命令在当前shell执行
find ./ -maxdepth 1 -mtime +3 -name "*" -exec rm -rf {} \;
exit 0
注意,$1,$2为执行sh命令时,占位传输过来的比如,该脚本名称叫ClearJenkinsJob.sh:
sh "/data/jenkins-read/workspace/testfiles/libs/ClearJenkinsJob.sh ${env.JOB_NAME} ${env.BUILD_NUMBER}"