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 比较运算符。
您的代码存在的问题是它进行的是词法 比较,而不是数值比较。 10
和 1
在词法上都小于 100
,但您提供的数字更大。
我会这样写,我觉得更清晰
#!/bin/bash
base=
shift
for n do
(( base > n )) && echo $n
done
和
$ smaller 100 5 8 1234 6 100
5
8
6
我正在尝试打印小于第一个数字的数字
./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 比较运算符。
您的代码存在的问题是它进行的是词法 比较,而不是数值比较。 10
和 1
在词法上都小于 100
,但您提供的数字更大。
我会这样写,我觉得更清晰
#!/bin/bash
base=
shift
for n do
(( base > n )) && echo $n
done
和
$ smaller 100 5 8 1234 6 100
5
8
6