2014-04-07 100 views
-1

您好,我正在嘗試在Ubuntu shell中創建一個程序,並在輸入變量後程序崩潰。代碼如下:http://pastebin.com/Chu4DPgFUbuntu Shell腳本問題

#!/bin/bash 

echo -n "Enter assignment mark:" 
read assign 

echo -n "Enter Test 1 mark:" 
read test1 

echo -n "Enter Test 2 mark:" 
read test2 

echo -n "Enter Final Exam mark:" 
read final 

total=$(($assign + $test1 + $test2 + $final)) 

if [[ $total -ge 90 && $total -le 100 ]]; then 
echo "Your grade is A+" 

elif [[ $total -ge 85 && $total -le 89 ]]; then 
echo "Your grade is A" 

elif [[ $total -ge 80 && $total -le 84 ]]; then 
echo "Your grade is A-"; 

elif [[ $total -ge 77 && $total -le 79 ]]; then 
echo "Your grade is B+" 

elif [[ $total -ge 73 && $total -le 76 ]]; then 
echo "Your grade is B" 

elif [[ $total -ge 70 && $total -le 72 ]]; then 
echo "Your grade is B-" 

elif [[ $total -ge 67 && $total -le 69 ]]; then 
echo "Your grade is C+" 

elif [[ $total -ge 63 && $total -le 66 ]]; then 
echo "Your grade is C" 

elif [[ $total -ge 60 && $total -le 62 ]]; then 
echo "Your grade is C-" 

elif [[ $total -ge 57 && $total -le 59 ]]; then 
echo "Your grade is D+" 

elif [[ $total -ge 53 && $total -le 56 ]]; then 
echo "Your grade is D" 

elif [[ $total -ge 50 && $total -le 52 ]]; then 
echo "Your grade is D-" 

elif [[ $total -ge 0 && $total -le 49 ]]; then 
echo "Your grade is F" 

else 
echo "?" 
fi 

我不知道什麼是錯的代碼。我相信它有一個基本問題。提前致謝。

+0

您需要在問題中包含您的代碼。 (順便說一句,我抓起了你的腳本的一個副本,它對我來說很好。) –

+1

你輸入了什麼,錯誤信息是什麼? –

+0

我爲所有成績輸入了10,並且在輸入第4個字符後我立即崩潰 – BigShovel

回答

-1

變化15行至

((總=分配+ TEST1 + TEST2 +最終))

和這個格式的所有下面的行:

if [[ $total -ge 90 && $total -le 100 ]]; then 
echo "Your grade is A+" 

if [ $total -ge 90 ] && [ $total -le 100 ]; then 
    echo "Your grade is A+" 

它應該工作。 準確地用空格

+1

您不能在'test'命令行中使用'&&'。 – tripleee

+0

是真的,我的錯。更改[$ total -ge 90 && $ total -le 100] 至 [$ total -ge 90] && [$ total -le 100];然後 – The86Freak