Bash Skriptində Test şərtlərini necə istifadə etməli

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:

Ə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:

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:

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:

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

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