我正在编写bash脚本,突然开始出现此行为:
[[ 1 < 2 ]]; echo $? # outputs 0
[[ 2 < 13 ]]; echo $? # outputs 1
但-lt
运作良好:
[[ 1 -lt 2 ]]; echo $? # outputs 0
[[ 2 -lt 13 ]]; echo $? # outputs 0
我不小心<
以某种方式覆盖了吗?
这是我编写的用于测试此行为的脚本:
#!/bin/bash
for a in {1..5}
do
for b in {1..20}
do
[[ $a < $b ]] && echo $a $b
done
echo
done
这是输出:
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
2 3
2 4
2 5
2 6
2 7
2 8
2 9
2 20
3 4
3 5
3 6
3 7
3 8
3 9
4 5
4 6
4 7
4 8
4 9
5 6
5 7
5 8
5 9
改变<
到-lt
在脚本给正常输出(5 10
示出了例如)。
重新启动并没有改变任何东西。
我的bash版本是GNU bash,版本4.3.42(1)-发行版(x86_64-pc-linux-gnu)。我在Ubuntu 15.10上。我不知道这里还有什么其他信息。
<
运算-lt
符,您将进行字符串比较,而运算符是数值比较,如果查看列出的结果,您将会意识到。从数字上看,数字2小于10,反之亦然。