Bash skriptidagi test shartlarini qanday ishlatish kerak

Test buyrug'i Linux buyruq qatorida bir elementni boshqasiga solishtirish uchun ishlatilishi mumkin, lekin mantiqiy va dastur oqimini boshqaruvchi shartli so'zlarning bir qismi sifatida BASH shell skriptlarida ham ko'proq ishlatiladi.

Asosiy misol

Ushbu buyruqlarni oddiygina oynani ochib sinashingiz mumkin.

sinov 1 -eq 2 && echo "ha" || echo "yo'q"

Yuqoridagi buyruqlar quyidagi kabi bo'linadi:

Aslida, bu buyruq 1dan 2 ga teng va ularni "ha" deb ko'rsatadigan "ha" iborasi bilan mos keladi va ular "yo'q" ko'rsatadigan echo "no" iborasi bajarilmasa bajarilmasa.

Raqamlarni solishtirish

Agar siz raqam sifatida ajraladigan elementlarni taqqoslasangiz, quyidagi taqqoslash operatorlarini ishlatishingiz mumkin:

Misollar:

sinov 1 -eq 2 && echo "ha" || echo "yo'q"

(displeyga "yo'q" ko'rsatiladi, chunki 1 teng emas 2)

sinov 1 -ge 2 && echo "yes" || echo "yo'q"

(ekranda "yo'q" ko'rsatiladi, chunki 1 qiymati 2 yoki undan katta emas)

sinov 1 -gt 2 && echo "yes" || echo "yo'q"

(displeyga "yo'q" ko'rsatiladi, chunki 1 dan 2 tagacha emas)

test 1 -le 2 && echo "ha" || echo "yo'q"

(displeyga "ha" ko'rsatiladi, chunki 1 dan kam yoki teng 2)

sinov 1 -lt 2 && echo "ha" || echo "yo'q"

(displeyga "ha" ko'rsatiladi, chunki 1 dan kam yoki teng 2)

sinov 1 -ne 2 && echo "yes" || echo "yo'q"

(displeyga "ha" ko'rsatiladi, chunki 1 teng emas 2)

Matnni taqqoslash

Agar siz strings sifatida ajraladigan elementlarni taqqoslasangiz, siz quyidagi taqqoslash operatorlarini ishlatishingiz mumkin:

Misollar:

sinov "string1" = "string2" && echo "yes" || echo "yo'q"

(ekranga "no" belgisi ko'rsatiladi, chunki "string1" "string2" ga teng emas)

sinov "string1"! = "string2" && echo "yes" || echo "yo'q"

("string1" ning "string2" teng emas, chunki ekranga "ha" ko'rsatiladi)

test -n "string1" && echo "yes" || echo "yo'q"

(ekranga "ha" ko'rsatiladi, chunki "string1" noldan katta mag'lubiyatga ega)

sinov -z "string1" && echo "yes" || echo "yo'q"

("string1" ning uzunligi noldan katta bo'lganligi sababli ekranga "yo'q" ko'rsatadi)

Fayllarni taqqoslash

Fayllarni taqqoslasangiz, siz quyidagi taqqoslash operatorlarini ishlatishingiz mumkin:

Misollar:

sinov / yo'l / to / file1 -n / path / to / file2 && echo "ha"

(Agar file1 file2 dan yangi bo'lsa, "ha" so'zi ko'rsatiladi)

sinov -e / path / to / file1 && echo "ha"

(agar fayl1 mavjud bo'lsa, "ha" so'zi ko'rsatiladi)

sinov -O / path / to / file1 && echo "yes"

(Agar fayl1 bo'lsa, "ha" so'zi ko'rsatiladi) "

Terminologiya

Ko'p shartlarni taqqoslash

Shu paytgacha hamma narsa bir narsani boshqasiga taqqoslab kelgan, ammo ikkita shartni solishtirish uchun nima qilish kerak.

Misol uchun, agar hayvonning to'rtta oyog'i bo'lsa va "moo" ga kirsa, u ehtimol sigir hisoblanadi. Faqatgina 4ta oyoqni tekshirib tursangiz, sizda sigir borligiga ishonch hosil qilasiz, ammo u albatta ishonchli ovozni tekshiradi.

Ikkala shartni bir vaqtning o'zida tekshirish uchun quyidagi iborani ishlating:

sinov 4 -eq 4 -a "moo" = "moo" && echo "bu sigir" || echo "bu sigir emas"

Bu erda asosiy qism - va nimani anglatadi.

Xuddi shu testni amalga oshirishning yanada yaxshiroq va tez-tez ishlatiladigan usuli mavjud va shundaydir:

sinov 4 -eq 4 && test "moo" = "moo" && echo "bu sigir" || echo "bu sigir emas"

Qilishingiz mumkin bo'lgan yana bir sinov, ikkita iborani taqqoslash va to'g'ri bo'lsa, bir mag'lubiyatga chiqadi. Masalan, "file1.txt" nomli faylni yoki "file1.doc" nomi berilgan faylni tekshirishni xohlasangiz, quyidagi buyruqni ishlatishingiz mumkin

test -e file1.txt -o -e file1.doc va& echo "file1 mavjud" || echo "file1 mavjud emas"

Bu yerda asosiy qism - yoki nimani anglatadi.

Xuddi shu testni amalga oshirishning yanada yaxshiroq va tez-tez ishlatiladigan usuli mavjud va shundaydir:

sinov -e file1.txt || test -e file1.doc va& echo "file1 mavjud" | echo "file1 mavjud emas"

Viktorina kalit so'zini yo'q qilish

Siz taqqoslashni amalga oshirish uchun so'z testidan foydalanishingiz shart emas. Bajarishingiz kerak bo'lgan yagona narsa shablonni kvadrat qavslarga quyidagi tarzda qo'shib qo'ying:

[-e file1.txt] && echo "file1 mavjud" | echo "file1 mavjud emas"

[Va] asosan test sifatida bir xil bo'ladi.

Keling, bir nechta shartlarni taqqoslashda yaxshilashingiz mumkinligini bilasiz:

[4 -eq 4] && ["moo" = "moo"] && echo "bu sigir" || echo "bu sigir emas"

[-e file1.txt] || [-e file1.doc] && echo "file1 mavjud" | echo "file1 mavjud emas"

Xulosa

Sinov buyrug'i skriptlarda ko'proq foydalidir, chunki bitta o'zgaruvchining qiymatini boshqasiga va nazorat qilish dasturlari oqimiga qarshi sinash mumkin. Standart buyruq satrida faylni yoki yo'qligini tekshirish uchun foydalanishingiz mumkin