#!/bin/bashfact(){local num=$1if [ "$num" -eq 0 ]thenfact=1elselet "decnum=num-1"fact $decnumlet "fact=$num*$?"fireturn $fact}fact $1echo "fact of $1 is $?"exit 0为何执行该脚本会有如下报错呢./fun27.sh: line 5: [: : integer expression expectedSegmentation fault
2 回答
侃侃尔雅
TA贡献1801条经验 获得超16个赞
执行这个脚本一定需要一个参数(第十五行fact $1),如果不带参数fact函数中的num变量就会被赋值为空,这样的换当运行到第五行if [ "$num" -eq 0 ] 脚本必然出错,一个空值无法与一个数字做比较,于是报错line 5: [: : integer expression expected
扬帆大鱼
TA贡献1799条经验 获得超9个赞
运行脚本时需要传入一个参数,如script.sh 25
脚本中在调用fact $1时用$1取得该参数并传递给fact函数。
若运行脚本时不带参数,那么fact函数中(脚本第5行)"$num" 就会为空字符串,而这里要求的是数字比较,因此报错。
- 2 回答
- 0 关注
- 216 浏览
添加回答
举报
0/150
提交
取消