为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

拉莫斯之舞 2022-07-21 17:13:52
#!/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

查看完整回答
反对 回复 2022-07-24
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

运行脚本时需要传入一个参数,如script.sh 25
脚本中在调用fact $1时用$1取得该参数并传递给fact函数。
若运行脚本时不带参数,那么fact函数中(脚本第5行)"$num" 就会为空字符串,而这里要求的是数字比较,因此报错。

查看完整回答
反对 回复 2022-07-24
  • 2 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信