【问题标题】:Ubuntu Shell Scripting IssueUbuntu Shell 脚本问题
【发布时间】:2014-04-07 17:43:24
【问题描述】:

您好,我正在尝试在 Ubuntu shell 中创建一个程序,但在我输入变量后程序崩溃了。代码如下:http://pastebin.com/Chu4DPgF

#!/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

我不知道代码有什么问题。我确信它存在一个根本问题。提前致谢。

【问题讨论】:

  • 您需要在问题中包含您的代码。 (顺便说一句,我拿了一份你的脚本,对我来说效果很好。)
  • 你输入了什么,错误信息是什么?
  • 我为所有成绩输入了 10,我在输入 4 后立即崩溃

标签: shell ubuntu scripting


【解决方案1】:

将第 15 行更改为

((总计 = 赋值 + test1 + test2 + final ))

以及此格式的以下所有行:

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+"

它应该可以工作。 准确使用空格

【讨论】:

  • 你不能在test命令行中间使用&&
  • 是的,我的错。将 [ $total -ge 90 && $total -le 100 ] 更改为 [ $total -ge 90 ] && [ $total -le 100 ];那么