每天一个shell脚本练习题(14)

题目:

编写一个脚本
用户输入两个文件的名称
分别判断这两个文件是否存在
判断这两个文件的类型是否相同
判断这两个文件的拥有者操作权限是否相同
若这两个文件都存在,且类型和操作权限都相等,则将较新的文件复制到目录/test 中,若两者的时间相同,则不做复制操作

知识点
1.if判断

# 参数
-e 判断文件是否存在
-d 判断目录是否存在

2.获取文件类型

# 截取文件名称最后一个.后的参数,做对比
# #符号*截取后保留右侧,从左向右开始数,2个##表示从右向左     %保留左侧 用*.  
${#filename#*.}
  1. 获取文件权限
# 记得用awk参数用单引号
`ls -l $1 | awk '{print $1}'`
  1. 获取文件最新修改时间
`stat -c %Y $1`

完整代码:

#!/bin/bash
if [ ! -e $1 ]
then 
    echo ${1} '不存在'
    exit 0
fi
if [ ! -e $2 ]
then 
    echo ${2} '不存在'
    exit 0
fi
typeone=${1##*.}
typetwo=${2##*.}
if [[ $typeone != $typetwo ]
then 
    echo '文件类型不一致'
    exit 1
fi
authone=`ls -l $1 | awk '{print $1}'`
authtwo=`ls -l $2 | awk '{print $1}'`
if [[ $authone != $authtwo ]]
then
    echo '操作权限不一致'
    exit 2
fi
updateone=`stat -c %Y $1`
updatetwo=`stat -c %Y $2`
if [ $updateone -lt $updatetwo ]
then
    cp $2 /test
elif [ $updateone -gt $update ]
then
    cp $2 /test
else
    echo '两个文件最后更新时间一致'
    exit
fi

猜你喜欢

转载自blog.csdn.net/weixin_43490690/article/details/89712812