脚本如下:为何执行该脚本会有如下报错呢?

#!/bin/bash
fact()
{
local num=$1
if [ "$num" -eq 0 ]
then
fact=1
else
let "decnum=num-1"
fact $decnum
let "fact=$num*$?"
fi
return $fact
}
fact $1
echo "fact of $1 is $?"
exit 0

为何执行该脚本会有如下报错呢
./fun27.sh: line 5: [: : integer expression expected
Segmentation fault

拉莫斯之舞
浏览 220回答 2
2回答

侃侃尔雅

执行这个脚本一定需要一个参数(第十五行fact $1),如果不带参数fact函数中的num变量就会被赋值为空,这样的换当运行到第五行if [ "$num" -eq 0 ] 脚本必然出错,一个空值无法与一个数字做比较,于是报错line 5: [: : integer expression expected

扬帆大鱼

运行脚本时需要传入一个参数,如script.sh 25脚本中在调用fact $1时用$1取得该参数并传递给fact函数。若运行脚本时不带参数,那么fact函数中(脚本第5行)"$num" 就会为空字符串,而这里要求的是数字比较,因此报错。
打开App,查看更多内容
随时随地看视频慕课网APP