Shell 打印小于第一个数字的数字

Shell print numbers that are smaller than first number

我正在尝试打印小于第一个数字的数字

./8d 100 5 8 6

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

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

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

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

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

这里是 some details 比较运算符。

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

我会这样写,我觉得更清晰

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

$ smaller 100 5 8 1234 6 100
5
8
6