2015-10-12 52 views
0

所以一切都在我的代碼工作,所有,但乘法操作一次(*)擊:參數太多[if語句]

ex4.sh: line 23: [: too many arguments 
ex4.sh: line 26: [: too many arguments 
ex4.sh: line 29: [: too many arguments 
ex4.sh: line 32: [: too many arguments 

繼承人的腳本 它問你一個2號分別輸入隨後的操作+加法 - 減法/除法和*乘法。 一切正常,這給參數太多錯誤

echo First number 
read NUM1 

if ! [[ "$NUM1" =~ ^[0-9]+$ ]]; then 
echo Integers only please 
else 

echo Second number 
read NUM2 

if ! [[ "$NUM2" =~ ^[0-9]+$ ]]; then 
echo Integers only please 
else 

echo What operation would you like to do?+/-* 
read OPERATION 

if [ $OPERATION = "+" ]; then 
echo Answer 
expr $NUM1 + $NUM2 
elif [ $OPERATION = "/" ]; then 
echo Answer 
expr $NUM1/$NUM2 
elif [ $OPERATION = "-" ]; then 
echo Answer 
expr $NUM1 - $NUM2 
elif [ $OPERATION = "*" ]; then 
echo Answer 
expr $NUM1 * $NUM2 
else 
echo Please enter one of +/-* 

fi 
fi 
fi 
+0

從這裏開始:http://tldp.org /LDP/Bash-Beginners-Guide/html/chap_07.html – hek2mgl

+3

Duplicate:http://stackoverflow.com/q/13781216/2088135 –

回答

2
if [[ $OPERATION = "+" ]]; then 
echo Answer 
expr $NUM1 + $NUM2 
elif [[ $OPERATION = "/" ]]; then 
echo Answer 
expr $NUM1/$NUM2 
elif [[ $OPERATION = "-" ]]; then 
echo Answer 
expr $NUM1 - $NUM2 
elif [[ $OPERATION = "*" ]]; then 
echo Answer 
expr $NUM1 \* $NUM2 
else 
echo Please enter one of +/-* 
+0

要麼是這樣,要麼在'$ OPERATION',*或兩個*之間加雙引號。在shell腳本中,如果你看到周圍沒有雙引號的變量引用,那麼你的頭腦裏會有一點警告,說明可能有錯誤。 –

+0

你放了什麼很好,謝謝!,並且從現在開始,生病的引用了雙引號。你應該這樣做[[]]嗎? – Kyler

+0

Yes Kyler,[[expression]]根據條件表達式表達式(man bash)和expr need * *或\'* \'的評估返回0或1的狀態,只需嘗試expr 2 \ * 3,expr 2 '*'3和expr 2 * 3 - >語法錯誤。 –

0

首先根據你所得到的所有錯誤,但乘法,如果所有的「讀操作」的失敗之後的語句。

嘗試使用[[]]而不是[]的if語句

加,其推薦更多的包裹與琴絃 「」