ວິທີການໃຊ້ເງື່ອນໄຂການທົດສອບພາຍໃນ Script Bash

ຄໍາສັ່ງການທົດສອບສາມາດຖືກນໍາໃຊ້ໃນເສັ້ນຄໍາສັ່ງ Linux ເພື່ອປຽບທຽບອົງປະກອບຫນຶ່ງຕໍ່ຕ້ານຄົນອື່ນແຕ່ມັນຖືກນໍາໃຊ້ໂດຍທົ່ວໄປໃນ BASH shell scripts ເປັນສ່ວນຫນຶ່ງຂອງ ຂໍ້ກໍານົດເງື່ອນໄຂ ທີ່ຄວບຄຸມຕາມເຫດຜົນແລະການໄຫລຂອງໂຄງການ.

ຕົວຢ່າງພື້ນຖານ

ທ່ານສາມາດລອງຄໍາສັ່ງເຫຼົ່ານີ້ໄດ້ໂດຍ ການເປີດປ່ອງຢ້ຽມຢູ່ປາຍສຸດ .

ທົດສອບ 1-eq 2 && echo "yes" || echo "ບໍ່"

ຄໍາສັ່ງຂ້າງເທິງນີ້ສາມາດແບ່ງປັນດັ່ງຕໍ່ໄປນີ້:

ໂດຍເນື້ອແທ້ແລ້ວ, ຄໍາສັ່ງແມ່ນປຽບທຽບ 1 ຫາ 2 ແລະພວກເຂົາຈະກົງກັບຄໍາສັ່ງ echo "yes" ທີ່ຖືກປະຕິບັດເຊິ່ງສະແດງວ່າ "yes" ແລະຖ້າພວກເຂົາບໍ່ກົງກັບຄໍາສັ່ງ echo "no" ທີ່ຖືກສະແດງໃຫ້ເຫັນວ່າ "no".

ປຽບທຽບຕົວເລກ

ຖ້າທ່ານກໍາລັງສົມທຽບອົງປະກອບທີ່ແຍກຕົວເປັນເລກທີ່ທ່ານສາມາດໃຊ້ຕົວປະຕິບັດການປຽບທຽບດັ່ງຕໍ່ໄປນີ້:

ຕົວຢ່າງ:

ທົດສອບ 1-eq 2 && echo "yes" || echo "ບໍ່"

(ສະແດງ "ບໍ່" ກັບຫນ້າຈໍເພາະວ່າ 1 ບໍ່ເທົ່າກັບ 2)

ທົດສອບ 1 -ge 2 && echo "yes" || echo "ບໍ່"

(ສະແດງ "ບໍ່" ກັບຫນ້າຈໍເພາະວ່າ 1 ບໍ່ຫຼາຍກວ່າຫຼືເທົ່າກັບ 2)

ທົດສອບ 1 -gt 2 && echo "yes" || echo "ບໍ່"

(ສະແດງ "ບໍ່" ກັບຫນ້າຈໍເນື່ອງຈາກວ່າ 1 ບໍ່ຫຼາຍກວ່າ 2)

ທົດສອບ 1 -le 2 && echo "yes" || echo "ບໍ່"

(ສະແດງ "ແມ່ນ" ກັບຫນ້າຈໍເພາະວ່າ 1 ແມ່ນຫນ້ອຍກວ່າຫຼືເທົ່າກັບ 2)

ທົດສອບ 1 -lt 2 && echo "yes" || echo "ບໍ່"

(ສະແດງ "ແມ່ນ" ກັບຫນ້າຈໍເພາະວ່າ 1 ແມ່ນຫນ້ອຍກວ່າຫຼືເທົ່າກັບ 2)

ທົດສອບ 1 -ne 2 && echo "yes" || echo "ບໍ່"

(ສະແດງ "yes" ກັບຫນ້າຈໍເພາະວ່າ 1 ບໍ່ເທົ່າກັບ 2)

ປຽບທຽບຂໍ້ຄວາມ

ຖ້າທ່ານກໍາລັງສົມທຽບອົງປະກອບທີ່ແຍກຕົວເປັນຊ່ອຍແນ່ທ່ານສາມາດໃຊ້ຕົວປະຕິບັດການປຽບທຽບດັ່ງຕໍ່ໄປນີ້:

ຕົວຢ່າງ:

ທົດສອບ "string1" = "string2" & & echo "yes" || echo "ບໍ່"

(ສະແດງ "ບໍ່" ກັບຫນ້າຈໍເນື່ອງຈາກ "string1" ບໍ່ເທົ່າກັນ "string2")

ທົດສອບ "string1"! = "string2" && echo "yes" || echo "ບໍ່"

(ສະແດງ "yes" ກັບຫນ້າຈໍເນື່ອງຈາກ "string1" ບໍ່ເທົ່າທຽມກັນ "string2")

test -n "string1" && echo "yes" || echo "ບໍ່"

(ສະແດງ "yes" ກັບຫນ້າຈໍເນື່ອງຈາກ "string1" ມີຄວາມຍາວຊ້າຫຼາຍກວ່າສູນ)

test -z "string1" & & echo "yes" || echo "ບໍ່"

(ສະແດງ "ບໍ່" ກັບຫນ້າຈໍເນື່ອງຈາກວ່າ "string1" ມີຄວາມຍາວຂອງສາຍທີ່ສູງກວ່າສູນ)

ການປຽບທຽບໄຟລ໌

ຖ້າທ່ານກໍາລັງປຽບທຽບໄຟລ໌ທ່ານສາມາດໃຊ້ຕົວປະຕິບັດການປຽບທຽບດັ່ງຕໍ່ໄປນີ້:

ຕົວຢ່າງ:

test / path / to / file1-n / path / to / file2 && echo "yes"

(ຖ້າ file1 ໃຫມ່ກວ່າ file2 ແລ້ວຄໍາວ່າ "yes" ຈະຖືກສະແດງຢູ່)

test-e / path / to / file1 && echo "yes"

(ຖ້າ file1 ມີຄໍາວ່າ "yes" ຈະສະແດງ)

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

(ຖ້າທ່ານເປັນເຈົ້າຂອງ file1 ແລ້ວຄໍາວ່າ "yes" ຈະຖືກສະແດງ ")

Terminology

ການປຽບທຽບເງື່ອນໄຂຫຼາຍ

ດັ່ງນັ້ນທຸກສິ່ງທຸກຢ່າງຢູ່ໄກໄດ້ຖືກປຽບທຽບສິ່ງຫນຶ່ງຕໍ່ຄົນອື່ນແຕ່ວ່າຈະເປັນແນວໃດຖ້າທ່ານຕ້ອງການປຽບທຽບສອງເງື່ອນໄຂ.

ຕົວຢ່າງ: ຖ້າສັດມີ 4 ຂາແລະໄປ "moo" ມັນອາດຈະເປັນງົວ. ພຽງແຕ່ກວດສອບ 4 ຂາບໍ່ຮັບປະກັນວ່າທ່ານມີງົວແຕ່ກວດເບິ່ງສຽງທີ່ມັນເຮັດໃຫ້ແນ່ນອນ.

ການທົດສອບທັງສອງເງື່ອນໄຂໃນເວລາດຽວໃຊ້ຄໍາສັ່ງດັ່ງຕໍ່ໄປນີ້:

ທົດສອບ 4 eq 4 -a "moo" = "moo" & & echo "ມັນເປັນງົວ" || echo "ມັນບໍ່ແມ່ນງົວ"

ສ່ວນທີ່ສໍາຄັນນີ້ແມ່ນ - a ເຊິ່ງຢືນຢູ່ກັບແລະ.

ມີວິທີການທີ່ດີກວ່າແລະມັກຈະໃຊ້ໃນການປະຕິບັດການທົດສອບດຽວກັນແລະດັ່ງນີ້:

ທົດສອບ 4 eq 4 && ທົດສອບ "moo" = "moo" & & echo "ມັນເປັນງົວ" || echo "ມັນບໍ່ແມ່ນງົວ"

ການທົດສອບອີກປະການຫນຶ່ງທີ່ທ່ານອາດຈະຕ້ອງການເຮັດແມ່ນການປຽບທຽບສອງຄໍາສັ່ງແລະຖ້າມີການສະແດງຂໍ້ມູນທີ່ເປັນຄວາມຈິງ. ຕົວຢ່າງ: ຖ້າທ່ານຕ້ອງການກວດສອບວ່າມີໄຟລ໌ຊື່ "file1.txt" ຫຼືໄຟລ໌ທີ່ເອີ້ນວ່າ "file1.doc" ແລ້ວທ່ານສາມາດໃຊ້ຄໍາສັ່ງຕໍ່ໄປນີ້:

test-e file1txt-o-e file1.doc && echo "file1 exists" || echo "file1 ບໍ່ມີ"

ສ່ວນທີ່ສໍາຄັນນີ້ແມ່ນ -o ເຊິ່ງຫມາຍເຖິງຫຼື.

ມີວິທີການທີ່ດີກວ່າແລະມັກຈະໃຊ້ໃນການປະຕິບັດການທົດສອບດຽວກັນແລະດັ່ງນີ້:

test-e file1txt || test -e file1.doc && echo "file1 exists" || echo "file1 ບໍ່ມີ"

ການລົບລ້າງຄໍາຫລັກການທົດສອບ

ທ່ານບໍ່ຈໍາເປັນຕ້ອງໃຊ້ການທົດສອບຄໍາເພື່ອປະຕິບັດການປຽບທຽບ. ທັງຫມົດທີ່ທ່ານຕ້ອງເຮັດຄືການຕິດຕັ້ງຄໍາສັ່ງໃນວົງເລັບສີ່ຫລ່ຽມດັ່ງຕໍ່ໄປນີ້:

[-e file1.txt] && echo "file1 exists" || echo "file1 ບໍ່ມີ"

[ແລະ] ໂດຍພື້ນຖານແລ້ວມີຄວາມຫມາຍຄືກັນກັບການທົດສອບ.

ໃນປັດຈຸບັນທ່ານຮູ້ນີ້ທ່ານສາມາດປັບປຸງການປຽບທຽບເງື່ອນໄຂຕ່າງໆດັ່ງຕໍ່ໄປນີ້:

[4-eq 4] && ["moo" = "moo"] & & echo "ມັນເປັນງົວ" || echo "ມັນບໍ່ແມ່ນງົວ"

[-e file1.txt] || [-e file1.doc] && echo "file1 exists" || echo "file1 ບໍ່ມີ"

Summary

ຄໍາສັ່ງການທົດສອບແມ່ນມີປະໂຫຍດຫຼາຍໃນສະຄິບເນື່ອງຈາກວ່າທ່ານສາມາດທົດສອບມູນຄ່າຂອງຕົວແປຕໍ່ຫນຶ່ງແລະການຄວບຄຸມໂຄງການຄວບຄຸມ. ກ່ຽວກັບເສັ້ນຄໍາສັ່ງມາດຕະຖານ, ທ່ານສາມາດໃຊ້ມັນເພື່ອກວດສອບວ່າໄຟລ໌ມີຢູ່ຫຼື