#!/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
|