Sen tanımını bulabilirsiniz -lt
ve -gt
bir belgelerinde test
komuta ( man test
) veya Bash belgelerinde beri test
yerleşik bir komuta bash (çoğu diğer kabukları gibi) 'dir.
-lt
ve -gt
sayısal karşılaştırmalar (eşit [] 'den küçük ve eşit değil], eşit [değerden küçük] ve. Aynı zamanda daha az / daha büyük ya da eşit-operatör vardır -le
ve -ge
, eşit ve-eşit değildir operatörler -eq
ve -ne
. Bunlar sayısal işleçlerdir, bu nedenle her iki taraf da sayı değilse ve 9
ondan daha az kabul edilirse bir hata olacaktır 10
.
Bunun gibi isimlerin -lt
normalden ziyade kullanılmasının nedeni <
, karakterin <
yeniden yönlendirme olarak yorumlanmasıdır. İşleçler =
ve !=
ayrıca var, ancak bir dize karşılaştırması yapıyorlar: test 00 -eq 0
true iken test 00 = 0
yanlış.
Bash dahil bazı mermiler de operatörlere sahiptir <
ve >
bir dizge sözlük karşılaştırması yaparlar, bu test 9 \< 10
nedenle yanlıştırlar çünkü 9
daha önce sıralanırlar 1
(ters eğik çizgi karakterin <
bir yönlendirme operatörü olarak yorumlanmasını önler ). Bu kabuklar ayrıca testler için çift dirsek sözdizimi de sunar, örneğin [[ 9 < 10 ]]
(tersi gibi [ 9 \< 10 ]
) içinde yeniden yönlendirme <
yapamayacak şekilde alıntı yapılması gerekmez.
echo
koddaki ifadelerin sorunuzu yanıtladığına işaret etmeye değer hissediyorum .