关于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 ],也不会报错,这是为何?