#!/bin/bash

in_path()
{

cmd=$1        ourpath=$2         result=1

#将默认的IFS(分隔符)为空格,这里先保留原本的给变量oldIFS,然后将IFS设置为:,这样做的目的是在 for 循环的时候我们会使用到$PATH的文件,他们格式是/usr/local/bin:/usr/bin:/usr/local/sbin,所以才需要将IFS这个全局变量给给成 :,在函数结束之后在改回去。

oldIFS=$IFS   IFS=":"

   for directory in “$ourpath”
   do
     if [ -x $directory/$cmd ] ; then
       result=0      # if we're here, we found $cmd in $directory
     fi
   done

   IFS=$oldIFS
   return $result
 }

 checkForCmdInPath()
 {
   var=$1

   if [ "$var" != "" ] ; then

#蓝色部分是判断语句,如果蓝色部分成立,执行红色部分返回红色部分结果。如果蓝色部分不成立,执行紫色部分,返回紫色部分结果。
     if [ "${var:0:1}" = "/" ] ; then
       if [ ! -x $var ] ; then
         return 1
       fi
     elif !  in_path $var "$PATH" ; then
       return 2
     fi
   fi
}
#  $# 的意思是看你输如的几个参数。例如: echo   $1 $2...;这条  $# -ne 1 的意思是判断你输入的参数是否不等于1,如果不等于1执行蓝色部分。等于1跳出。
if [ $# -ne 1 ] ; then
  echo "Usage: $0 command" >&2 ; exit 1
fi
#这就是调用我们上面写的函数了,只接受一个参数$1,判断参数执行的返回值,1,2,3输出不同的结果。 参考上面的return 0, return 1,return 2 。
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. VMware安装CentOS
  2. OpenLDAP与Apache
  3. [xcode]instruments来检验你的app
  4. js事件 event.target
  5. Android NDK 下载
  6. 判断iPhone的WiFi是否打开的两种方法 之是否连接上 WiFi
  7. 201521123016 《Java程序设计》第5周学习总结
  8. win7及以上系统打开chm空白或显示"无法打开"的2个解决方案
  9. 一种优雅的条件引用第三方.net库的方法
  10. Go 语言数据类型
  11. 第一册:lesson sixty five.
  12. java io系列25之 PrintWriter (字符打印输出流)
  13. elasticsearch 6.1.1 transport jar
  14. beta阶段测试基本概况报告
  15. V4L2应用程序框架【转】
  16. logstash grok 分割匹配日志
  17. 使用PHP生成二维码图像
  18. 基于9款CSS3鼠标悬停相册预览特效
  19. IOS在一个程序中启动另一个程序
  20. kinect 2(ubuntu16.04)

热门文章

  1. MySQL 如何实现数据插入
  2. immutable.js学习笔记(七)----- Seq
  3. 六、python基础知识之变量常量、索引取值和PEP8规范
  4. 关于xlrd最新版本不支持.xlsx文件的解决办法
  5. python学习第三周总结
  6. C++ 地球人口承载力
  7. 力扣---1306. 跳跃游戏 III
  8. Nginx09 http的keepalive及在nginx的配置使用
  9. Nginx01 简介和安装
  10. Vue08 数据代理