资源描述:
《shell----编程实例》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1.判断一个文件是否是可执行文件,且判断能否在PATH中找到,有三种结果(一)找到且可执行0(二)非情况一(2)没找到或者是不可执行1(3)没找到2函数in_path:判断传入文件是否可执行,若可执行(且存在)返回0,否则返回1;分析:为测试传入文件是否在PATH所有的目录中,需取得PATH中的每个路径,可用循环,但需要设定环境中的分隔符(借助环境变量IFS)为PATH中的分隔符冒号”:”注:$IFS输入分隔符.当shell读取输入数据的时候,会把一组字符看做是单词之间的分隔字符,它们通常是空格,制表符,和换行符.函数调用方式为:in_path
2、filenamein_path(){cmd=$1#$1为函数的参数1,以此类推retval=1#定义返回值变量oldIFS=$IFSIFS=:#设置新的IFS,并保存原来的以恢复使用fordirectoryin$PATH#for循环结构二:for–indoif[-xdirectory/$cmd];then#if条件语句之同行表示以分号隔开retval=0#-x判断文件有是否有可执行权限donedoneIFS=$oldIFS#恢复原来IFS,returnretval}注:1.函数的结构,没有形参2.变量的引用需要符号$,而变量的定义或赋值则不需要
3、。3.赋值要无间隙,条件要间隙改进:1.将路径、分隔符均作为函数的参数传入,应用得到扩展。补充,in_path函数不能对绝对路径的文件处理,需写个函数对这一情况单独处理checkForCmdInPath(){var=$1#首先判断传入的非空串是否为绝对路径,即检测第一个字符是不是”/”,如果是,直接测–xif[$var!=“”];then#条件等价于-n$varif[“${var%${var#?}}”=‘/’];then#等价于$(echo$var
4、cut-c1)if[!-x$var];thenreturn1#notfoundornotexec
5、utablefielif!inpath$var;thenreturn2#notfoundinPATHfifi}注:此函数让人一头雾水,详解如下:1.判断一个文件是否是可执行文件,且判断能否在PATH中找到,有三种结果(一)找到且可执行0(二)非情况一(2)没找到或者是不可执行1(3)没找到2函数in_path:判断传入文件是否可执行,若可执行(且存在)返回0,否则返回1;分析:为测试传入文件是否在PATH所有的目录中,需取得PATH中的每个路径,可用循环,但需要设定环境中的分隔符(借助环境变量IFS)为PATH中的分隔符冒号”:”注:$IFS输
6、入分隔符.当shell读取输入数据的时候,会把一组字符看做是单词之间的分隔字符,它们通常是空格,制表符,和换行符.函数调用方式为:in_pathfilenamein_path(){cmd=$1#$1为函数的参数1,以此类推retval=1#定义返回值变量oldIFS=$IFSIFS=:#设置新的IFS,并保存原来的以恢复使用fordirectoryin$PATH#for循环结构二:for–indoif[-xdirectory/$cmd];then#if条件语句之同行表示以分号隔开retval=0#-x判断文件有是否有可执行权限donedoneI
7、FS=$oldIFS#恢复原来IFS,returnretval}注:1.函数的结构,没有形参2.变量的引用需要符号$,而变量的定义或赋值则不需要。3.赋值要无间隙,条件要间隙改进:1.将路径、分隔符均作为函数的参数传入,应用得到扩展。补充,in_path函数不能对绝对路径的文件处理,需写个函数对这一情况单独处理checkForCmdInPath(){var=$1#首先判断传入的非空串是否为绝对路径,即检测第一个字符是不是”/”,如果是,直接测–xif[$var!=“”];then#条件等价于-n$varif[“${var%${var#?}}”=
8、‘/’];then#等价于$(echo$var
9、cut-c1)if[!-x$var];thenreturn1#notfoundornotexecutablefielif!inpath$var;thenreturn2#notfoundinPATHfifi}注:此函数让人一头雾水,详解如下:1.判断一个文件是否是可执行文件,且判断能否在PATH中找到,有三种结果(一)找到且可执行0(二)非情况一(2)没找到或者是不可执行1(3)没找到2函数in_path:判断传入文件是否可执行,若可执行(且存在)返回0,否则返回1;分析:为测试传入文件是否在PAT
10、H所有的目录中,需取得PATH中的每个路径,可用循环,但需要设定环境中的分隔符(借助环境变量IFS)为PATH中的分隔符冒号”:”注:$IFS输入分隔