shell脚本 判断文件存在,并比较文件时间

本文介绍了一个用于Android recovery模式的Shell脚本案例,该脚本可以检查特定文件是否存在,并进一步比较两个文件的时间戳来确定哪个文件更新。此外,脚本还能够显示较新文件的大小。


shell脚本 判断文件存在,并比较文件时间。


Android recovery模式专用。


#!/sbin/sh
#xiaopan 
if [ -f filename1 ]; then
	busybox mount /sdcard
	busybox mount /emmc
	filename2="/sdcard/filename2"
	filename3="/emmc/filename3"
	sleep 2
	if [ -f "$filename2" -a -f "$filename3" ]; then
		if [ $filename2 -nt $filename3 ]; then
			echo "$filename2 is newer than $filename3"
			echo "Size is $(ls -l $filename2 | awk '{ print $5 }')"
		elif [ $filename2 -ot $filename3 ]; then
			echo "$filename3 is newer than $filename2"
			echo "Size is $(ls -l $filename3 | awk '{ print $5 }')"
		fi 
	else
		if [ -f "$filename2" ]; then
			echo "Size is $(ls -l $filename2 | awk '{ print $5 }')"
		elif [ -f "$filename3" ]; then
			echo "Size is $(ls -l $filename3 | awk '{ print $5 }')"
		fi
	fi
fi



shell 脚本判断文件是否不存在,可以使用 `test` 命令或其简写形式 `[ ]` 中的条件表达式。具体方法是通过 `-e` 选项来检查文件是否存在,若不存在则执行相应的操作。 以下是一个基本的判断逻辑: ```sh if [ ! -e "filename" ]; then echo "The file does not exist." fi ``` 上述代码中,`!` 表示逻辑非,用于反转 `-e` 的判断结果,即当文件存在时条件成立。这种方式可以有效地检测指定路径下的文件是否存在根据结果执行不同的分支逻辑[^1]。 如果需要在脚本中处理用户输入判断文件是否存在,可以结合 `read` 命令获取用户输入的文件名,然后进行判断: ```sh read -p "Please input a filename: " filename if [ ! -e "$filename" ]; then echo "The file $filename does not exist." exit 1 fi ``` 这段脚本首先提示用户输入一个文件名,接着使用 `if` 语句判断文件是否不存在。如果确实不存在,则输出提示信息退出脚本[^2]。 此外,在更复杂的场景下,例如需要同时判断文件类型(普通文件或目录)以及权限等信息时,可以在确认文件存在之后进一步使用 `-f`、`-d` 等选项来进行详细检查: ```sh if [ -e "$filename" ]; then if [ -f "$filename" ]; then echo "Filename is regular file" elif [ -d "$filename" ]; then echo "Filename is directory" fi [ -r "$filename" ] && echo "File is readable" [ -w "$filename" ] && echo "File is writable" [ -x "$filename" ] && echo "File is executable" fi ``` 以上方法展示了如何在 shell 脚本中灵活地处理文件存在性检查及相关的属性判断。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值