Sen tanımını bulabilirsiniz -ltve -gtbir belgelerinde testkomuta ( man test) veya Bash belgelerinde beri testyerleşik bir komuta bash (çoğu diğer kabukları gibi) 'dir.
-ltve -gtsayı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 -leve -ge, eşit ve-eşit değildir operatörler -eqve -ne. Bunlar sayısal işleçlerdir, bu nedenle her iki taraf da sayı değilse ve 9ondan daha az kabul edilirse bir hata olacaktır 10.
Bunun gibi isimlerin -ltnormalden 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 0true iken test 00 = 0yanlış.
Bash dahil bazı mermiler de operatörlere sahiptir <ve >bir dizge sözlük karşılaştırması yaparlar, bu test 9 \< 10nedenle yanlıştırlar çünkü 9daha ö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.
echokoddaki ifadelerin sorunuzu yanıtladığına işaret etmeye değer hissediyorum .