繁体   English   中英

Shell脚本输出最大

[英]Shell script to output the largest

如何编写一个脚本,该脚本将接收参数列表并输出最大的数字。 如果未提供任何参数,则输出错误消息。

我编写了以下代码,以检查是否未提供任何参数,并输出错误消息。

#!/bin/bash
if [ "$#" -eq  "0" ]
then
  echo "No arugments supplied"
else
  echo "$# Parameter"

但是我不知道如何继续...

保持当前最大 循环输入,必要时更新最大值。 最后,您将获得全局最大值。

未经测试:

#!/usr/bin/bash
if [ $# -eq 0 ]; then
    echo "Usage: $0 NUMBERS" >&2
    exit 1;
fi

max="$1"
shift
while [ $# -gt 0 ]; do
    if [ "$1" -gt "$max" ]; then
        max="$1"
    fi
    shift
done

echo "$max"

使用sort -n(数字)和-r(反向),然后选择输出的第一行-例如

#!/bin/bash
if [ "$#" -eq  "0" ]
then
  echo "No arugments supplied"
else
  echo "$# Parameter"
  for i in $*; do echo ${i}; done | sort -nr | head -1
fi  

现在,您面临的唯一问题是输入(自变量)不是数字时,但是您什么也没说。

这是您可以实现的伪代码:

  • 将第一个参数保存在名为max的变量中
  • 遍历参数
    • 如果参数大于max ,则更新max
  • max列印

这是一个显示所有参数的示例循环:

for num; do
    echo $num
done

这是一个比较值的示例:

if (( num > max )); then
    echo $num is greater than $max
fi

这应该足以帮助您完成家庭作业。


好吧,既然其他人已经为您提供了实际的解决方案,这也是我的:

#!/bin/bash

if (( $# == 0 )); then
    echo "No arugments supplied"
    exit 1
fi

max=$1
for num; do
    if (( num > max )); then
        max=$num
    fi
done

echo $max

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM