手机
当前位置:查字典教程网 >脚本专栏 >linuxshell >用来检测输入的选项$1是否在PATH中的shell脚本
用来检测输入的选项$1是否在PATH中的shell脚本
摘要:今天无意中发现一本挺有意思的shell编程的书,是e文的,内容是101个shell案例,坚持明天看一个,写点心得。下面是例子001:#!/b...

今天无意中发现一本挺有意思的shell编程的书,是e文的,内容是101个shell案例,坚持明天看一个,写点心得。

下面是例子001:

#!/bin/sh # inpath - Verifies that a specified program is either valid as is, # or that it can be found in the PATH directory list. in_path() { # Given a command and the PATH, try to find the command. Returns # 0 if found and executable, 1 if not. Note that this temporarily modifies # the IFS (input field separator) but restores it upon completion. cmd=$1 path=$2 retval=1 oldIFS=$IFS IFS=":" for directory in $path do if [ -x $directory/$cmd ] ; then retval=0 # if we're here, we found $cmd in $directory fi done IFS=$oldIFS return $retval } checkForCmdInPath() { var=$1 # The variable slicing notation in the following conditional # needs some explanation: ${var#expr} returns everything after # the match for 'expr' in the variable value (if any), and # ${var%expr} returns everything that doesn't match (in this # case, just the very first character. You can also do this in # Bash with ${var:0:1}, and you could use cut too: cut -c1. if [ "$var" != "" ] ; then if [ "${var%${var#" ] ; then if [ ! -x $var ] ; then return 1 fi elif ! in_path $var $PATH ; then return 2 fi fi } if [ $# -ne 1 ] ; then echo "Usage: $0 command" >&2 ; exit 1 fi checkForCmdInPath "$1" case $"$1 found in PATH" ;; 1 ) echo "$1 not found or not executable" ;; 2 ) echo "$1 not found in PATH" ;; esac exit 0

这脚本目的是用来检测输入的选项$1是否在PATH中。

这脚本有几个地方值得注意的:

1)它运用了函数嵌套,在checkForCmdInPath里嵌套了in_path函数。

2)if [ "${var%${var#" ] 这语句中的${var%${var#?}}是显示变量的第一个字符,也可以用${varname:1:1} 或$(echo $var | cut -c1)替代。

3) elif ! in_path $var $PATH ; then 这意思是如果in_path $var $PATH 执行结果不为0的话则

问题:

发现输入 echo , echo_err, /etco_err 都返回正确结果,但输入 /etc/echo_right (存在着执行文件但不在PATH中)却返回found in PATH。我想这脚本还有需要完善的地方。

【用来检测输入的选项$1是否在PATH中的shell脚本】相关文章:

用内置变量调试shell脚本的方法

判断输入的日期是否正确的shell脚本

Shell实用技巧:快速去除字符串中的空格

通过短信发送LOG归类号码发送情况的shell脚本

消耗CPU资源的shell脚本

用来记录登录后使用命令的shell脚本

检测网站down掉后自动发信的shell脚本代码

一个测试下载速度的shell脚本

提取oralce当天的alert log的shell脚本代码

kill特定进程的shell脚本代码

精品推荐
分类导航