Shell脚本输出最大

Shell script to output the largest

如何编写一个脚本来接收参数列表并输出最大的数字。如果没有提供参数,输出错误信息。

我写了下面的代码,检查是否没有提供参数,输出错误信息。

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

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

使用 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=
for num; do
    if (( num > max )); then
        max=$num
    fi
done

echo $max

保持当前最大值。循环输入,必要时更新 max。最后你会得到全局最大值。

未测试:

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

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

echo "$max"