Shell判断文件是否可在$PATH中找到并且可执行

#!/bin/bash


#  判断一个文件是否是 可执行文件,且判断能否在PATH中找到,有三种结果
# (1)  找到且可执行                  0
# (2)  找到且不可执行                1
# (3)  没找到                       2


can_find=1
can_run=1


get_result()
{
   res=$(expr $can_find + $can_run)
   echo $res
   return $res
}


in_path()
{
   # 判断是否带了参数
   if [ $# -eq 0 ];
   then
      echo "usage : sh $0 fileName."
      echo "Error 01 : please input a fileName." 
      r=$(get_result)
      #echo "$r"
      return $?
   fi
   # 判断文件是否在$PATH里找到
   oldIFS=$IFS
   IFS=":"
   for each_path in $PATH
   do
      #echo "$each_path/$1"
      if [ -e $each_path/$1 ];
      then
         can_find=0
	     #echo "$1 can find!"
         if [ -x $each_path/$1 ];
         then
           can_run=0
           echo "$each_path/$1"
         fi
      fi
   done
          
   IFS=$oldIFS


   r_chose=$(get_result)
   case "$r_chose" in
   0 ) echo "success find." ;;
   1 ) echo "can find,can't be running." ;;
   2 ) echo "not found." ;;
   esac
   return $?
}




in_path $1

          res=$(get_result)   res接收的是echo $res,是get_result标准输出的东西,而不是get_result的返回值.

          $?                          上一个被调用函数的返回值

         举例如下:

“sum=$(fsum 2 5)”这种方式,是将标准输出(echo 出来的东子)传递给主程序的变量而不是返回值!

1
2
3
4
5
6
7
8
9
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值