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:
- Sinov - bu sizning taqqoslashingizni xohlaysiz degan ma'noni anglatadi
- 1 - solishtiradigan birinchi element
- -eq (qanday qilib sizni taqqoslaysan, bu holda, siz bir sonning boshqasiga tengligini tekshirasiz)
- 2 - siz birinchi elementni yana solishtiradigan element
- && - Natijada to'g'ri bo'lsa, quyidagi iboralarni bajaring
- echo "yes" - agar taqqoslash haqiqiy bo'lsa, ishlatish buyrug'i
- | | - Natijada noto'g'ri bo'lsa, quyidagi iboralarni bajaring
- echo "no" - agar taqqoslash noto'g'ri bo'lsa, ishlatish buyrug'i
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:
- -eq - qiymati teng 1 qiymati 2
- -ge - qiymati 2 qiymatiga teng yoki katta
- -gt - qiymati 2 dan katta
- -le - qiymat 2 qiymati 2 ga teng yoki undan kam
- -lt - qiymat 2 dan kam
- -ne - qiymati 1 qiymatiga teng emas
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:
- = - 1-qatorga mos keladigan mag'lubiyat 2
- = 1 - mag'lubiyatga 2 ta simvol
- -n - 0 dan katta mag'lubiyat uzunligi
- -z - mag'lubiyatning uzunligi 0
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:
- -ef - fayllar bir xil qurilma va inode raqamlariga ega (ular bir xil fayl)
- -nt - birinchi fayl ikkinchi fayldan yangi
- -ot - Birinchi fayl ikkinchi faylga qaraganda eski
- -b - fayl mavjud va bloklangan
- -c - fayl mavjud va maxsus belgi
- -d - Fayl bor va u katalog
- -e - Fayl mavjud
- -f - fayl mavjud va doimiy fayl
- -g - fayl mavjud va belgilangan guruh raqamiga ega
- -G - foydalanuvchi guruhi tomonidan fayl mavjud va egasi
- -h - fayl mavjud va ramziy havola
- -k - Fayl mavjud va uning yopishqoq bit-seti mavjud
- -L - Xuddi shu bilan
- -O - Fayl sizning egangizdir
- -p - Fayl mavjud va nomlangan quvur
- -r - Fayl mavjud va o'qilishi mumkin
- -s - Fayl mavjud va hajmi noldan katta
- -S - Fayl mavjud va u rozettir
- -t - Fayl identifikatori terminalda ochiladi
- -u - Fayl mavjud va o'rnatilgan foydalanuvchi identifikatori bit o'rnatilgan
- -w - fayl mavjud va yoziladigan
- -x - fayl mavjud va bajariladi
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
- Maxsus blokirovka qilish - fayl bloklash qurilmasi bo'lib, u ma'lumotlarni bayt bloklarida o'qish degan ma'noni anglatadi. Ular odatda qattiq disklar kabi qurilma fayllari.
- Belgilar maxsus - Fayl siz unga yozganda va odatda ketma-ket port kabi qurilma bilan ishlaydi
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