2013-04-16 26 views
1

該腳本應該打印「輸入要添加的嵌套編號:」並繼續執行此操作,直到用戶輸入負數。在這一點上它應該打印正數的總和。然而,正如循環要求下一個數字一次,它被輸入,然後不再問,腳本只是停止任何事情,甚至不會到達循環內的下一行。這個c-shell腳本爲什麼停止?

#!/bin/csh -x 
# 
# This script adds positive numbers entered by the user, stopping 
# when a negative number is added 
# Usage: +#, +#, +#... -#. 
# 
@ x=0 
@ sum = 0 
while($x>= 0) 
echo -n "Enter the next number to be added: " 
@ sum = $sum + $< 
@ x = $< 
end 
# 
exit 0 

回答

1

$<從標準輸入讀取一行。這必須分配給一個變量,否則如果$<第二次使用該腳本將繼續之前預期進一步輸入。

@ x=0 
@ sum = 0 
while ($x >= 0) 
    echo -n "Enter the next number to be added: " 
    @ x = $< 
    if ($x >= 0) then 
     @ sum = $sum + $x 
    endif 
end 
echo $sum 
exit 0 
+0

謝謝,我沒有意識到這一點。這現在可以工作,但是當我輸入負數來退出循環時,它會再次運行一次並添加負數。我輸入了-1,它從總和中減去了一個,不應該因爲-1不是> = 0而導致循環不能運行? – SixTwentyFour

+0

哦,是的。添加了一個if語句來檢查輸入是否大於或等於零來糾正問題。 – suspectus