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"
如何编写一个脚本来接收参数列表并输出最大的数字。如果没有提供参数,输出错误信息。
我写了下面的代码,检查是否没有提供参数,输出错误信息。
#!/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"