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

本文介绍了一个实用的Bash脚本案例,通过用户输入的两个文件名,脚本能够检查文件是否存在,比较文件类型和权限,最后根据文件的更新时间进行智能复制。涉及的知识点包括if判断、文件类型和权限获取、文件时间戳读取等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

编写一个脚本
用户输入两个文件的名称
分别判断这两个文件是否存在
判断这两个文件的类型是否相同
判断这两个文件的拥有者操作权限是否相同
若这两个文件都存在,且类型和操作权限都相等,则将较新的文件复制到目录/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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值