#!/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 關注
- 242 瀏覽
添加回答
舉報
0/150
提交
取消