计算传递给bash脚本的最大参数

时间:2011-12-24 19:39:27

标签: bash unix terminal

我正在尝试计算传递给bash脚本的最大参数。这是代码:

#!/bin/sh

max=$1

for var in "$@"
do
    if ($var>$max)
    then
        max=$var
    fi
done

echo $max

这是我得到的:

$ /bin/sh my_script 1 2 3
rgz: 11: 1: not found
rgz: 11: 2: not found
rgz: 11: 3: not found
1

我做错了什么?

3 个答案:

答案 0 :(得分:3)

这可能适合你 -

#!/bin/bash

max="$1"
for var in "$@"
do
    if [ "$var" -gt "$max" ] # Using the test condition
    then
        max="$var"
    fi
done
echo "$max"

答案 1 :(得分:0)

这是我的。小改进......

#!/bin/bash

max="$1"
for v in "$@"
do
  [[ $v -gt $max ]] && max=$v
done
echo "$max"

答案 2 :(得分:0)

您可以将结果传递给sort,并使用tail找到最大值(排序列表中的最后一项):

your stuff | sort -n | tail -1

可能这不是计算上最有效的方法来获得最大值,但可以完成工作。