找到最多的三个数字

时间:2017-06-16 05:05:34

标签: shell unix sh

编写一个shell脚本来查找三个数字中的最大数字。假设输入是作为命令行参数给出的,如果没有给出这三个数字,则显示错误消息" 缺少命令行参数"。

我的剧本就在这里,但是我所有的错误都是平等且不相同的选择... plz hellpppp me ...

if [ $# -eq 3 ]; then
   if [ $1 -eq $2 -eq $3 ]; then
       echo "All numbers are equal"
   elif [  $1 -eq $2 -ne $3 ||  $2 -eq $3 -ne $2 ||  $1 -eq $3 -ne $2 ]; then
       echo "I can't figure out which number is greater"
   elif [ $1 -gt $3 && $1 -gt $3 ]; then
       echo "$1 is the biggest number"
   elif [ $2 -gt $3 ]; then
       echo "$2 is the biggest number"
   else
       echo "$3 is the biggest number"
   fi
else
   echo "command line args are missing"
fi

6 个答案:

答案 0 :(得分:0)

观察:

  1. 如果用户输入四个或更多数字,则会显示错误消息“命令 线args丢失“会出错。
  2. -eq语法不允许1 -eq 2 -eq 3。运行它返回 一个“bash: [: too many arguments”错误。 -ne也是如此。
  3. ||应替换为-o] || [
  4. 此测试不合适:$1 -gt $3 && $1 -gt $3
    • 第一个$3应为$2
    • &&应替换为] && [-a
  5. "I can't figure out which number is greater"的测试和输出是不必要的。如果 A = B B> C ,只需打印 A

答案 1 :(得分:0)

您的两个主要问题是尝试链接fn:replace(您需要使用两个单独的{"@context":"http://schema.org"}命令)并尝试在{{1}内使用-eq[ (再次,使用单独的命令)。你的第二个案例没有意义;整数是有序的,所以如果三者不相等,那么将会有一个最大的值。您可以在||检查中将&&替换为[,以便忽略任何其他参数。

与往常一样,您应该引用参数扩展,以避免意外的参数值破坏您的代码。

-eq

答案 2 :(得分:0)

尝试使用此脚本:

#!/bin/bash
if [ $# -eq 3 ]
then
         if [ $1 -gt $2 ] && [ $1 -gt $3 ]
         then
         echo "$1 is Biggest number"

         elif [ $2 -gt $1 ] &&  [ $2 -gt $3 ]
         then
         echo "$2 is Biggest number"

         elif [ $3 -gt $1 ] && [ $3 -gt $1 ]
         then
         echo "$3 is Biggest number"
         fi
else
echo "command line arguments are missing"
fi

答案 3 :(得分:0)

以下是正确答案:

if [ $# -lt 2 ]
then 
    echo "command line arguments are missing"
elif [ $1 -eq $2 ]&&[ $2 -eq $3 ]
then
    echo "All the three are equal"
elif [ $1 -eq $2 ]||[ $1 -eq $3 ]
then
    echo "I cannot figure out which number is biggest"
elif [ $1 -gt $2 ]
then
    if [ $1 -gt $3 ]
    then
        echo "$1 is biggest number"
    else
        echo "$3 is biggest number"
    fi
elif [ $2 -gt $3 ]
then
    echo "$2 is biggest number"
else
    echo

 "$3 is biggest number"
fi

答案 4 :(得分:0)

简洁明了的代码:

{{1}}

答案 5 :(得分:-1)

用于查找三个数字是否相等以及三个数字中的最大数

#!/bin/bash
echo ”enter 3 numbers”
read a
read b
read c
if [$a –eq $b –a $a –eq $c]
then
echo “3 number are equal”
elif [$a –gt $b –a $a –gt $c]
then
echo ”$a is the greatest number”
elif [$b –gt $c]
then
echo “$b is the greatest number”
else
echo “$c is the greatest number”
fi