hjack 发表于 2006-5-13 18:31

[SHELL we talk之四]比较一组数的大小,输出最大者

想到三种方法,

#!/bin/bash
#找出最大的数
#2006.5.13 created by hjack
#version 1
#history:

Usage(){
echo "Usage:max x1 x2 x3 ..."
exit 1
}

#=============================
#传统方法,逐个比较,大的就赋给max变量。
#-----------------------------
max1(){
max=$1
for i in $(echo $*)
do
    if [ $max -lt $i ];then
      max=$i
    fi
done
echo "the max value is : $max"
}

#=============================
#方法同max1,使用了shift来对参数进行移动。
#-----------------------------
max2(){
max=$1
while [ $2 ]
do
    if [ $max -lt $2 ];then
      max=$2
    fi
    shift
done
echo "the max value is : $max"
}

#=============================
#先对要比较的数进行sort排序,然后输出最后一行。
#有个问题是,怎样把结果保存在一个变量里,像上面两个例子一样。 谁知道就说说~
#-----------------------------
max3(){
for i in $(echo $*)
do
    echo $i
done | sort -n | tail -1
}

#=============================
#利用awk进行处理。
#----------------------------
max4(){
echo "$@" | awk 'BEGIN{x=$1;} {for(i=1;i<=NF;i++)if($i>x)x=$i;} END{print "the max value is:" x}'
}

main(){
if [ $# -lt "1" ] ;then
    Usage "$@"
fi

max1 "$@"
max2 "$@"
max3 "$@"
max4 "$@"
}

#----------------
main "$@"



[ 本帖最后由 hjack 于 2006-5-25 12:41 编辑 ]

powerwind 发表于 2006-5-14 15:09

楼主好寂寞啊!我来顶下.

我上学期也接触了下Shell,可是现在我连Linux系统也没安装.因为我觉得学这个工作上可能不需要,到时真的要再学也不迟吧!可能很多人和我这样想,你的知音就比较少了.
是了,官方QQ只有Windows版的,你的公司不会用Linux吧?
呵呵,有空的话,我写写Windows脚本编程,知音一定比你多!
鼓励一下,楼主继续 talk ~!~

hjack 发表于 2006-5-14 17:20

那你就错了,现在工作上很多服务器是linux的。

iptton 发表于 2006-5-14 20:10

LINUX真的那么重要吗?

hjack 发表于 2006-5-25 12:41

增加了一种方法。

采用awk来处理。

#=============================
#利用awk进行处理。
#----------------------------
max4(){
echo "$@" | awk 'BEGIN{x=$1;} {for(i=1;i<=NF;i++)if($i>x)x=$i;} END{print "the max value is:" x}'
}


其中 NF变示的是列数。

皇家救星 发表于 2008-11-4 22:06

原帖由 hjack 于 2006-5-25 12:41 发表 https://www.gdutbbs.com/images/common/back.gif
#=============================
#先对要比较的数进行sort排序,然后输出最后一行。
#有个问题是,怎样把结果保存在一个变量里,像上面两个例子一样。 谁知道就说说~
#-----------------------------
max3(){
for i in $(echo $*)
do
    echo $i
done | sort -n | tail -1
}


max3(){
for i in $(echo $*)
do
    echo $i
done | sort -n | tail -1 | read x
}
这样应该可以 : )

tremenpig 发表于 2008-11-5 15:52

Linux好有用的,经常要用到的,Windows漏洞这么多,谁敢用它做服务器

皇家救星 发表于 2008-11-5 23:13

看是什么需求,确实是有公司用windows 2003做服务器的

leeone 发表于 2008-11-6 00:12

天啊!06年的贴啊!
页: [1]
查看完整版本: [SHELL we talk之四]比较一组数的大小,输出最大者