主页 > 知识库 > 用来检测输入的选项$1是否在PATH中的shell脚本

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

热门标签:测绘地图标注名称 百度地图标注直线距离 鹤岗400电话申请 德阳400电话申请 天津电话外呼系统排名 怎么在百度地图标注公司的位置 智能电销机器人有用吗 外呼电话系统怎么操作 商机地图标注

今天无意中发现一本挺有意思的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 $? in
 0 ) echo "$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。我想这脚本还有需要完善的地方。

您可能感兴趣的文章:
  • 自动化下载并检测ftp文件备份的shell脚本
  • shell脚本实现实时检测文件变更
  • Shell脚本实现检测Cygwin最快的镜像站点
  • VBS脚本写的Windows硬件检测工具分享
  • Linux Shell脚本实现检测tomcat
  • Shell脚本实现检测进程是否正在运行
  • PowerShell脚本实现检测网络内主机类型
  • 脚本批量检测网站是否存活

标签:自贡 武汉 优质小号 丹东 镇江 滁州 六盘水 百色

巨人网络通讯声明:本文标题《用来检测输入的选项$1是否在PATH中的shell脚本》,本文关键词  用来,检测,输入,的,选项,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《用来检测输入的选项$1是否在PATH中的shell脚本》相关的同类信息!
  • 本页收集关于用来检测输入的选项$1是否在PATH中的shell脚本的相关信息资讯供网民参考!
  • 推荐文章