Shell打印编号小于第一个编号

时间:2015-03-19 13:44:56

标签: bash shell unix

我试图打印小于第一个数字的数字

./8d 100 5 8 6

所以我的结果应该是5 8 6

 #!/bin/bash
    for i in $*
    do
    if [[ $1 > $i ]]; then
        echo "Num " $i
    fi
    done

但我没有得到任何结果。我做错了什么?

2 个答案:

答案 0 :(得分:2)

您的代码存在的问题是它正在进行 lexical 比较,而不是数字。 101在词汇上都小于100,但您提供的数字较大。

我这样的代码,我觉得它更清楚

#!/bin/bash
base=$1
shift
for n do 
    (( base > n )) && echo $n 
done

$ smaller 100 5 8 1234 6 100
5
8
6

答案 1 :(得分:1)

您应该使用-lt / -eq / -gt来比较整数。

if [[ $1 -gt $i ]]; then
    echo "Num " $i
fi

这里有关于比较运营商的some details