关于linux shell函数返回值问题

关于linux shell函数返回值问题

#!/bin/bash
# History:
# 2017/6/15 chuankun first release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH


ERROR_VALUE=255
EQVALUE=249
declare -i j
declare -i i=20

//比较两数大小的函数,并返回一个值。
max_number()
{
if [ -z "$2" ]
then
    return $ERROR_VALUE
fi

if [ "$1" -eq "$2" ]
then

    return $EQVALUE
else
    if [ "$1" -gt "$2" ]
    then
        return $1
    else
        return $2
    fi
fi
}

echo -n "Input a number:"
read j
echo
max_number $i $j
return_value=$?
if [ "$return_value" -eq $ERROR_VALUE ]//如果未输入参数
then
    echo "Need to pass two parameters to function."
elif [ "$return_value" -eq $EQVALUE ]  //如果两数相等
then
    echo "The two numbers are equal."
else                                   //输出最大值。
    echo "The larger number is $return_value."
fi
exit 0
1-该函数的返回值ERROR_VALUE和EQVALUE如果改为负数的话,执行该shell就会出错,这是什么原因?

2-函数的参数$1和$2在比较时,if [ "$1" -gt "$2" ],采用了双引号,这是为何,本人实验过,if [ $1 -gt $2 ],也不会报错,这是为何?

你可能感兴趣的:(linux-脚本)