私は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)-release(x86_64-pc-linux-gnu)です。私はUbuntu 15.10にいます。ここで関連する他の情報はわかりません。
<
、一方の操作、あなたは文字列の比較を行っている、-lt
オペレータが数値比較であるあなたが列挙されてきた結果を見れば、あなたはそれを実現します。数値的に2はアルファベット順で10未満で、逆の場合も同様です。