首页 > 解决方案 > 编写一个 shell 脚本来找出三个数字中最大的一个。获取用户输入并显示结果

问题描述

编写一个 shell 脚本来找出三个数字中最大的一个。获取用户输入并显示结果。

样本输入 1:

10
20
30

样本输出 1:

30 是最大的数字

样本输入 2:

10
10
10

样本输出 2:

所有三个数字都相等

样本输入 3:

10
10
1

样本输出 3:

我不知道哪个数字最大

巴什代码:

#!bin/bash
read a b c
if [ $a -eq $b -a $a -eq $c ]; then
    echo "All the three numbers are equal"
elif [[ $a -eq $b || $b -eq $c || $c -eq $a ]]; then
    echo "I cannot figure out which number is largest"
else
    if [ $a -gt $b -a $a -gt $c ]; then
        echo "$a is biggest number"
    elif [ $b -gt $a -a $b -gt $c ]; then
        echo "$b is biggest number"
    elif [ $c -gt $a -a $c -gt $b ]; then
        echo "$c is biggest number"
    fi
fi

要通过的测试用例:要通过三个测试用例,但我只能通过一个测试用例。

  1. 不同的值(通过)。 通过测试用例
  2. 唯一值(失败)。 失败的测试用例
  3. 相等的值(失败)。 失败的测试用例

评估代码时的实际结果:

评估失败

注意:即使我得到了预期结果的实际结果,但我能够通过唯一的一个测试用例(不同的值),而剩下的两个测试用例(相等的值和唯一的值)都失败了。我什至无法发现错误。

当我以这些方式尝试时,我遇到了一些错误:

给出两个相等的值和一个特殊字符时出错 输入两个不同的值和一个特殊字符时出错 输入少于 3 个时出错 提供超过 3 个输入时出错

标签: bashunix

解决方案


我有同样的问题。进行了一些故障排除。

read v1
read v2
read v3

if [[ $v1 == $v2 && $v1 == $v3 ]]; then
    echo "All the three numbers are equal"
elif [[ $v1 == $v2 || $v2 == $v3 || $v3 == $v1 ]]; then
    echo "I cannot figure out which number is largest"
else
    if [[ $v1 > $v2 && $v1 > $v3 ]]; then
        echo "$v1 is largest number"
    elif [[ $v2 > $v3 && $v2 > $v1 ]]; then
        echo "$v2 is largest number"
    elif [[ $v3 > $v1 && $v3 > $v2 ]]; then
        echo "$v3 is largest number"
    fi
fi

推荐阅读