如何获得数量最多出5号的使用shell脚本(How to get greatest number o

2019-11-03 04:11发布

我试图找到在shell脚本5个提供的数字最多。 我在测试类猛砸我的Ideone.com代码。 我收到错误

运行时错误时间:0.02存储器:5312信号:-1

下面是代码

read -p "Enter first Number:" n1
read -p "Enter second Number:" n2
read -p "Enter third Number:" n3
read -p "Enter fourth Number:" n4
read -p "Enter fourth Number:" n5
if[ [ n1 -gt n2 ] && [ n1 -gt n2 ] && [ n1 -gt n3 ] && [ n1 -gt n4 ] && [ n1 -gt n5 ]] ; then
      echo "$n1 is a Greatest Number"
elif[ [ n2 -gt n3 ] && [ n2 -gt n3 ] && [ n2 -gt n4 ] && [ n2 -gt n5 ]] ; then
     echo "$n2 is a Greatest Number"
elif[ [ n3 -gt n4 ] && [ n3 -gt n5 ] ] ; then  
     echo "$n3 is a Greatest Number"
elif[ n4 -gt n5 ] ; then  
     echo "$n4 is a Greatest Number"
else
     echo "$n5 is a Greatest Number"
fi

问题是什么? 好心指南

Answer 1:

看来你的问题是空间。 之后“如果”“elif的”和之前的“添加空格]”

又有怎样的

echo -e "$n1 \n $n2 \n $n3 \n $n4 \n $n5" | sort -n -r | head -n 1


Answer 2:

你可以更有效地做到这一点,而无需调用像外部命令sorthead / tail

max2()
{ if (( "$1" > "$2" ))
  then
    echo "$1"
  else
    echo "$2"
  fi
}
max5()
{ tmp1=$(max2 "$1" "$2")
  tmp2=$(max2 "$3" "$4")
  tmp3=$(max2 "$tmp1" "$tmp2")
  echo $(max2 "$tmp3" "$5")
}
m=$(max5 "$n1" "$n2" "$n3" "$n4" "$n5")

如果你知道所有的数字足够小,可以使用return $n代替echo $n ,然后捕获返回代码,而不是数字的文本表示。



Answer 3:

这里有一个简单的shell功能,找到最大值了通过数字参数:

max()
{
    local m="$1"
    for n in "$@"
    do
        [ "$n" -gt "$m" ] && m="$n"
    done
    echo "$m"
}

例如: max 1 3 2返回3



文章来源: How to get greatest number out of 5 number using shell script