实验目的
熟悉UNIX的基本SHELL程序设计方法,包括:
命令行参数检测
变量设置
文件状态检测与特定信息读取
程序运行控制
实验内容
编写一个SHELL程序,动态检测指定文件的状态信息,当文件的大小发生改变时,给出提示信息,并继续前进检测。
当文件的大小的变化次数或持续检查无变化次数达到一定值时,退出检查,程序结束。
实验内容:shell程序设计思路
(1)清屏;
(2)提示用户输入要检测其状态的文件名;
(3)显示该文件的状态信息(提示:该状态信息可由命令ls –l 来得到),或找不到该文件时的错误提示;
(4)用cut命令,或用sed或awk命令来截取状态信息中文件的大小并保存;
(5)每隔5秒钟检测一次该文件大小的信息,并与保存的文件原来的大小相比较;
(6)如果文件大小未改变,则屏幕显示不变,并继续每隔5秒钟检测一次;
(7)如果文件大小已改变,则保存新的文件大小,并在屏幕上显示:file [ filename ] size changed(括号中的filename为本程序运行时用户输入的被检测的文件名)。程序继续每隔5秒钟检测一次文件的大小;
(8)程序循环执行5~7步的操作。当被检测的文件或者已累计改变了两次大小,或者已连续被检测了十次还未改变大小时,给出相应提示,然后清屏退出。
实验内容:shell程序设计思路
(1)清屏;
clear
讯享网
(2)提示用户输入要检测其状态的文件名;
讯享网 echo “Input name:” read fname
(3)显示该文件的状态信息(提示:该状态信息可由命令ls –l 来得到),或找不到该文件时的错误提示;
用 if test –f $fname # 这里也可以用:if [ -f $name],测试文件是否存在 then fi ls –l [ $fname]
linux中ls -l命令以长格式显示目录下的内容列表。
输出的信息从左到右依次包括文件名、文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等
(4)用cut命令,或用sed或awk命令来截取状态信息中文件的大小并保存;
讯享网 ls –l [ $fname] | cut –c 36-46 #管道:文件大小是在36列到46列 oldstat=` ` #注意是单撇号
(5)每隔5秒钟检测一次该文件大小的信息,并与保存的文件原来的大小相比较;
while [ xxx -ne. 2 ] do …… done
讯享网if [ “$oldstat”=“$newstat” ] then ……. fi
(6)如果文件大小未改变,则屏幕显示不变,并继续每隔5秒钟检测一次;
(7)如果文件大小已改变,则保存新的文件大小,并在屏幕上显示:file [ filename ] size changed(括号中的filename为本程序运行时用户输入的被检测的文件名)。程序继续每隔5秒钟检测一次文件的大小;
计数: test_count=`expr $test_count + 1` change_count=`expr $change_count + 1`. #注意,数学运算命令expr,两边用单撇号
参考代码
讯享网# #detect file status # tput clear # clear screen echo "Please input file name:" read filename filesize=`ls -l $filename | awk '{ print $5 }'` echo $filesize cursize=`ls -l $filename | awk '{ print $5}'` echo $cursize change=0 unchange=0 while [ "$change" -le 1 -a "$unchange" -le 9 ] do if [ "$filesize" == "$cursize" ] then unchange=`expr $unchange + 1` echo "unchange=$unchange" else filesize=$cursize change=`expr $change + 1` echo "file $filename size changed" fi sleep 5 sync cursize=`ls -l $filename | awk '{ print $5 }'` done; echo "finish" exit 0
程序要求达到的运行效果
./test05.sh运行程序
1、程序运行时,如果找不到指定的文件,程序提示错误信息:

创建test.txt文件,输入
2、运行程序,输入要检查的文件名file1,在十次检查周期内,文件大小都一直不变的情况下,程序输出如下信息:

3、一旦当发现检查的文件大小改变时,程序显示如下信息:
监测过程中文件大小改变1次
后台修改文件内容


监测过程中文件大小改变2次




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/53880.html