因为复制的文件复制之后要在文件名后面加上日期,所以在运行shell的时候输入了两个参数。删除的文件和复制的文件都是.war结尾的,第一个参数是去除文件格式(也就是“.war”)的文件名,第二个参数是要添加的日期
运行shell的指令是:“./test.sh demo 20161221”(这里我是直接在test.sh这个shell所在目录下运行的,所以直接在前面加./,如果在其它目录下的话要写清楚路径,demo就是要复制的demo.war的文件名,同时也是要删除的目录demo的目录名,参数之间注意一个空格)
shell代码:
#! /bin/bash
cd /opt/tomcat7/webapps #要删除的demo目录所在的路径
var1="$1" #shell中用$1来获取第一个输入的参数,同理$2为第二个参数
var2="$2"
sourceFile="${var1}.war" #这是要复制的原文件名,demo.war,这里用了字符串拼接
fileName="${var1}${var2}pepp.war" #使用变量的时候最好将变量名用中括号括起来
echo "The file selected is ${var1}"
if [ -e $var1 ] #注意if括号中的空格,-e代表查看demo这个文件是否存在
then
rm -rf $var1 #强制删除目录和目录下子文件
echo "$var1 is delected"
else
echo "$var1 does not exist"
fi #倒写的if结束if语句
cd /root/Desktop/backup 切换到复制的源文件所在目录
cp -i ${sourceFile} /opt/tomcat7/webapps/${fileName} #复制到指定目录并更名
echo "${fileName} is copied"
注:
1.如果不想在输入指令的时候输入参数,可以用read读取用户输入,代码中将var1和var2的值变一下:
echo "Please input the name of file"
read var1
echo "Please input the data"
read var2
这样在运行./shell的时候会出现提示输入的信息,然后按提示输入即可