编写一个Shell程序findit.sh通过调用递归的Shell函数,搜索参数2指定的目录树,查找所有的以.c和.h结尾的文件,如文件行中含有参数1指定的字符串,显示该行和相应的文件名。如目录参数2省略,则从当前目录中搜索。例如: findit.sh se

admin2016-05-14  23

问题 编写一个Shell程序findit.sh通过调用递归的Shell函数,搜索参数2指定的目录树,查找所有的以.c和.h结尾的文件,如文件行中含有参数1指定的字符串,显示该行和相应的文件名。如目录参数2省略,则从当前目录中搜索。例如:
findit.sh searchstring /home/student/wallg
搜索以/home/student/wang为根的目录树中的C程序和头文件,查找含有searchstring字符串的行,显示文件名,例如:
findit.sh searchstring
从当前目录开始搜索。用含有Shell特殊字符的字符串模式进一步调试该SheU程序。

选项

答案程序清单21-3的findit.sh通过调用递归函数findit_rue实现搜索功能。 程序清单21-3:findit.sh #!/bin/sh findit_fuc() { for item in*;do {}对当前目录中的每一项 if[-d$item];then #如是目录 ( #在子进程中执行 path_dir=$path_dir/$item cd$item #退出子进程后,能回到原先目录 findit fuc {}递归执行函数 ) eise grep $filter_str_$item>/dev/null 2>/dev/null #先获得查找状态 if[$?-eq 0];then#查找到字符串 echo-n"In$pathdir dir:" #显示目录 grep-Hn$filter_str$item #显示文件名与行号 fi fi done } if[${I}-eq0];then {}无字符串参数 echo usage:$0 string dir exit fi if[$#-ge2];then path dir=$2 else path_dir=$PWD #当前目录作为查找目录 fi filter_str=$1 cd$path_dir findit_fuc。

解析
转载请注明原文地址:https://kaotiyun.com/show/QdNx777K
本试题收录于: 操作系统题库理工类分类
0

最新回复(0)