Test komutu bir elementi başqa birinə qarşı müqayisə etmək üçün Linux komanda xəttində istifadə edilə bilər, lakin daha çox BASH kabuk skriptlərində məntiq və proqram axını nəzarət edən şərti ifadələrin bir hissəsi kimi istifadə olunur.
Əsas bir nümunə
Terminal pəncərəsini açaraq sadəcə bu əmrləri sınayabilirsiniz .
test 1 -eq 2 && echo "yes" || yankı "yox"
Yuxarıda göstərilən əmr aşağıdakı kimi pozula bilər:
- test - bu bir müqayisə yerinə yetirmək deməkdir
- 1 - müqayisə edəcəyi ilk element
- -eq (necə müqayisə edirsiniz, bu halda, bir ədədin başqa birinə bərabər olub olmadığını yoxlayırsınız)
- 2 - İlk elementi yenidən müqayisə etdiyiniz element
- && - nəticə doğru olduğunda aşağıdakı ifadəni işə salın
- echo "yes" - müqayisə doğru olduqda qaçmaq əmri
- || - nəticənin yalan olduğu təqdirdə aşağıdakı ifadəni işə salın
- yankı "yox" - müqayisə yanlış qaytarırsa əmr əmri
Əslində komanda 1 ilə 2-i müqayisə edir və "bəli" ifadəsini əks etdirən yankı "bəli" ifadəsinə uyğun gəlir və "yox" ifadəsini əks etdirən yankı "no" ifadəsi yerinə yetirilmir.
Nömrələri müqayisə etmək
Nömrələr kimi parçalanan elementləri müqayisə edirsinizsə, aşağıdakı müqayisəli operatorları istifadə edə bilərsiniz:
- -eq - dəyər 1 ədədi bərabər dəyər 2
- -ge - dəyəri 1-dən çox və ya 2-ə bərabərdir
- -gt - dəyərdən 2-dən çox olan dəyərdir
- -le - dəyəri 1 dəyərdən 2 və ya bərabərdir
- -lt - dəyəri 1-dən az 2-dir
- -ne - dəyər 1 bərabər dəyər deyil 2
Nümunələr:
test 1 -eq 2 && echo "yes" || yankı "yox"
(ekran 1-ə bərabər deyil, çünki ekrana "yoxdur") 2)
test 1 -ge 2 && echo "yes" || yankı "yox"
(ekrana "yox" göstərir, çünki 1-dən çox və ya 2-ə bərabər deyil)
test 1-gt 2 && echo "yes" || yankı "yox"
(1-dən 2-dən çox olmadığı üçün ekrana "yox" göstərir)
test 1 -le 2 && echo "yes" || yankı "yox"
(1-dən az və ya 2-ə bərabər olduğundan ekrana "bəli" göstərilir)
test 1 -lt 2 && echo "yes" || yankı "yox"
(1-dən az və ya 2-ə bərabər olduğundan ekrana "bəli" göstərilir)
test 1 -ne 2 && echo "yes" || yankı "yox"
(ekran 1-ə bərabər deyil, çünki ekrana "bəli" göstərilir 2)
Mətn müqayisə
Əgər strings kimi parçalanan elementləri müqayisə etsəniz, aşağıdakı müqayisəli operatorları istifadə edə bilərsiniz:
- = - simli 1 eşleme simli 2 edir
- ! = - simli 2 fərqlidir
- -n - simli uzunluq 0'dan çoxdur
- -z - simli uzunluq 0
Nümunələr:
test "string1" = "string2" && echo "yes" || yankı "yox"
("string1" bərabər deyil "string2" çünki ekrana "yox" göstərər)
test "string1"! = "string2" && echo "yes" || yankı "yox"
(ekrana "bəli" göstərilir, çünki "string1" bərabər deyil "string2")
test -n "string1" && echo "yes" || yankı "yox"
("string1" sıfırdan çox olan bir string uzunluğu olduğundan ekrana "bəli" göstərilir)
test -z "string1" && echo "yes" || yankı "yox"
("string1" sıfırdan böyük bir dize uzunluğuna malikdir, çünki ekrana "yox" göstərir)
Faylları müqayisə
Faylları müqayisə etsəniz, aşağıdakı müqayisəli operatorları istifadə edə bilərsiniz:
- -ef - Dosyaların eyni cihaz və inode nömrələrinə sahib olduqları (eyni faylda)
- -nt - ikinci fayldan daha yeni olan fayl
- -ot - İlk fayl ikinci fayldan daha böyükdür
- -b - fayl var və xüsusi blokdur
- -c - Fayl var və xüsusi xarakter daşıyır
- -d - Fayl var və bir qovluqdur
- -e - Fayl mövcuddur
- -f - Fayl mövcuddur və müntəzəm bir fayldır
- -g - Fayl mövcuddur və müəyyən qrup nömrəsinə malikdir
- -G - İstifadəçi qrupu tərəfindən fayl mövcuddur və sahibi
- -h - Fayl mövcuddur və simvolik bir əlaqədir
- -k - fayl mövcuddur və yapışqan bit dəsti var
- -L - eyni -h ilə eyni
- -O - Faylınız sahibisiniz
- -p - Fayl mövcuddur və adlandırılmış bir borudur
- -r - Fayl var və oxunabilirdir
- -s - Fayl mövcuddur və sıfırdan böyük ölçüsü var
- -S - Fayl var və bir yuva
- -t - Fayl təsvirçisi terminalda açılır
- -u - Fayl mövcuddur və set-user-id biti müəyyən edilir
- -w - Fayl var və yazılabilirdir
- -x - Fayl var və yerinə yetirilə bilər
Nümunələr:
test / yol / to / file1 -n / path / to / file2 && echo "yes"
(File1 file2dən daha yeni olduqda "yes" sözü göstərilir)
test -e / path / to / file1 && echo "yes"
(fayl1 varsa "yes" sözü göstərilir)
test -O / yol / to / file1 && echo "yes"
(əgər siz fayl1 sahibi olsanız, "yes" sözü göstərilir) "
Terminologiya
- Blok xüsusi - Fayl bir blok cihazdır ki, məlumatlar bayt bloklarında oxunur. Bunlar ümumiyyətlə sabit disklər kimi cihaz fayllarıdır.
- Xüsusi xarakter - Fayl ona yazdığınız zaman dərhal əmələ gəlir və serial port kimi bir cihazdır
Bir çox şərtləri müqayisə
Bu günə qədər hər şey bir şeyi bir-birinə qarşı müqayisə edir, amma iki şərtlə müqayisə etmək istəyirsən.
Məsələn, bir heyvanın 4 ayağı var və "moo" gedirsə, yəqin ki, bir inəkdir. Sadəcə 4 ayaq üçün yoxlama bir inək olduğundan əmin edir, lakin mütləq düzəldən səsi yoxlayır.
Hər iki şərtin bir anda yoxlanılması üçün aşağıdakı ifadəni istifadə edin:
test 4 -eq 4 -a "moo" = "moo" && echo "bir inək" || yankı "bir inək deyil"
Buradaki əsas hissə - bu, dayanır və.
Eyni testi yerinə yetirmək üçün daha yaxşı və daha çox istifadə edilən bir üsul var və bu aşağıdakı kimidir:
test 4 -eq 4 && test "moo" = "moo" && echo "bir inək" || yankı "bir inək deyil"
İstədiyiniz başqa bir test, iki ifadəni müqayisə edir və ya doğru olan bir simli çıxarsa. Məsələn, "file1.txt" adlı bir fayl var və ya "file1.doc" adlı bir fayl olduğunu yoxlamaq istəyirsinizsə, aşağıdakı əmrləri istifadə edə bilərsiniz
test -e file1.txt -o -e file1.doc və& echo "file1 exists" || echo "file1 yoxdur"
Burada əsas hissə - ya da dayanır.
Eyni testi yerinə yetirmək üçün daha yaxşı və daha çox istifadə edilən bir üsul var və bu aşağıdakı kimidir:
test -e file1.txt || test -e file1.doc və& echo "file1 exists" || echo "file1 yoxdur"
Test Açar sözünü ləğv et
Müqayisə etmək üçün həqiqətən söz testini istifadə etməmisiniz. Yapmanız gereken bütün ifadələr kvadrat mötərizədə aşağıdakıları əhatə edir:
[-e file1.txt] && echo "file1 var" || echo "file1 yoxdur"
[Və] əsasən test kimi eyni deməkdir.
İndi birdən çox şərtləri müqayisə etmək üçün yaxşılaşa biləcəyinizi bilirsiniz:
[4 -eq 4] && ["moo" = "moo"] && echo "bir inək" || yankı "bir inək deyil"
[-e file1.txt] || [-e file1.doc] && echo "file1 var" || echo "file1 yoxdur"
Xülasə
Test əmri skriptlərdə daha faydalıdır, çünki bir dəyişənin dəyərini başqa birinə və nəzarət proqramı axına qarşı test edə bilərsiniz. Standart komanda xəttində bir faylın olub olmadığını yoxlamaq üçün istifadə edə bilərsiniz