ຄໍາສັ່ງການທົດສອບສາມາດຖືກນໍາໃຊ້ໃນເສັ້ນຄໍາສັ່ງ Linux ເພື່ອປຽບທຽບອົງປະກອບຫນຶ່ງຕໍ່ຕ້ານຄົນອື່ນແຕ່ມັນຖືກນໍາໃຊ້ໂດຍທົ່ວໄປໃນ BASH shell scripts ເປັນສ່ວນຫນຶ່ງຂອງ ຂໍ້ກໍານົດເງື່ອນໄຂ ທີ່ຄວບຄຸມຕາມເຫດຜົນແລະການໄຫລຂອງໂຄງການ.
ຕົວຢ່າງພື້ນຖານ
ທ່ານສາມາດລອງຄໍາສັ່ງເຫຼົ່ານີ້ໄດ້ໂດຍ ການເປີດປ່ອງຢ້ຽມຢູ່ປາຍສຸດ .
ທົດສອບ 1-eq 2 && echo "yes" || echo "ບໍ່"
ຄໍາສັ່ງຂ້າງເທິງນີ້ສາມາດແບ່ງປັນດັ່ງຕໍ່ໄປນີ້:
- ການທົດສອບ - ນີ້ຫມາຍຄວາມວ່າທ່ານກໍາລັງປະຕິບັດການປຽບທຽບ
- 1 - ອົງປະກອບທໍາອິດທີ່ທ່ານຈະປຽບທຽບ
- -eq (ເຮັດແນວໃດທ່ານປຽບທຽບ, ໃນກໍລະນີນີ້, ທ່ານກໍາລັງທົດສອບວ່າຫມາຍເລກຫນຶ່ງເທົ່າກັບອີກ)
- 2 - ອົງປະກອບທີ່ທ່ານກໍາລັງປຽບທຽບອົງປະກອບທໍາອິດອີກເທື່ອຫນຶ່ງ
- && - ດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້ຖ້າຜົນໄດ້ຮັບເປັນຄວາມຈິງ
- echo "yes" - ຄໍາສັ່ງທີ່ຈະດໍາເນີນການຖ້າການປຽບທຽບຄືນແທ້ຈິງ
- || - ດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້ຖ້າຜົນໄດ້ຮັບບໍ່ຖືກຕ້ອງ
- echo "no" - ຄໍາສັ່ງທີ່ຈະດໍາເນີນການຖ້າການປຽບທຽບກັບຄືນມາ
ໂດຍເນື້ອແທ້ແລ້ວ, ຄໍາສັ່ງແມ່ນປຽບທຽບ 1 ຫາ 2 ແລະພວກເຂົາຈະກົງກັບຄໍາສັ່ງ echo "yes" ທີ່ຖືກປະຕິບັດເຊິ່ງສະແດງວ່າ "yes" ແລະຖ້າພວກເຂົາບໍ່ກົງກັບຄໍາສັ່ງ echo "no" ທີ່ຖືກສະແດງໃຫ້ເຫັນວ່າ "no".
ປຽບທຽບຕົວເລກ
ຖ້າທ່ານກໍາລັງສົມທຽບອົງປະກອບທີ່ແຍກຕົວເປັນເລກທີ່ທ່ານສາມາດໃຊ້ຕົວປະຕິບັດການປຽບທຽບດັ່ງຕໍ່ໄປນີ້:
- -eq - does value 1 equal value 2
- -ge - ຄືຄ່າ 1 ທີ່ສູງກວ່າຫລືເທົ່າກັບຄ່າ 2
- - gt - ແມ່ນມູນຄ່າ 1 ກ່ວາມູນຄ່າ 2
- - la - ແມ່ນມູນຄ່າ 1 ຫນ້ອຍກວ່າຫຼືເທົ່າກັບມູນຄ່າ 2
- - lt - ແມ່ນມູນຄ່າ 1 ຫນ້ອຍກ່ວາມູນຄ່າ 2
- -ne - does value 1 ບໍ່ເທົ່າກັບ 2 ຄ່າ
ຕົວຢ່າງ:
ທົດສອບ 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)
ປຽບທຽບຂໍ້ຄວາມ
ຖ້າທ່ານກໍາລັງສົມທຽບອົງປະກອບທີ່ແຍກຕົວເປັນຊ່ອຍແນ່ທ່ານສາມາດໃຊ້ຕົວປະຕິບັດການປຽບທຽບດັ່ງຕໍ່ໄປນີ້:
- = - ບໍ່ 1 string string matching 2
- = - ຄື string 1 ແຕກຕ່າງກັບ string 2
- - n - ແມ່ນໄລຍະຍາວທີ່ສູງກວ່າ 0
- - z - ແມ່ນຄວາມຍາວຂອງຊ່ອຍແນ່ 0
ຕົວຢ່າງ:
ທົດສອບ "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" ມີຄວາມຍາວຂອງສາຍທີ່ສູງກວ່າສູນ)
ການປຽບທຽບໄຟລ໌
ຖ້າທ່ານກໍາລັງປຽບທຽບໄຟລ໌ທ່ານສາມາດໃຊ້ຕົວປະຕິບັດການປຽບທຽບດັ່ງຕໍ່ໄປນີ້:
- - ef - ໄຟລ໌ທີ່ມີອຸປະກອນດຽວກັນແລະຈໍານວນ inode (ພວກເຂົາແມ່ນໄຟດຽວກັນ)
- -nt - ແມ່ນໄຟລ໌ທໍາອິດທີ່ໃຫມ່ກວ່າໄຟລ໌ທີສອງ
- -ot - ແມ່ນໄຟລ໌ທໍາອິດທີ່ສູງກວ່າໄຟລ໌ທີສອງ
- -b - ໄຟລ໌ທີ່ມີຢູ່ແລະຖືກປິດພິເສດ
- -c - ໄຟລ໌ທີ່ມີຢູ່ແລະມີລັກສະນະພິເສດ
- -d - ໄຟລ໌ທີ່ມີຢູ່ແລ້ວແລະເປັນໄດເລກະທໍລີ
- - e - ໄຟລ໌ທີ່ມີຢູ່
- -f - ໄຟລ໌ທີ່ມີຢູ່ແລະເປັນໄຟລ໌ປົກກະຕິ
- -g - ໄຟລ໌ທີ່ມີຢູ່ແລະມີຈໍານວນກຸ່ມທີ່ກໍານົດໄວ້
- -G - ໄຟລ໌ທີ່ມີຢູ່ແລະເຈົ້າຂອງໂດຍກຸ່ມຜູ້ໃຊ້
- -h - ໄຟລ໌ທີ່ມີຢູ່ແລະເປັນ ການເຊື່ອມໂຍງສັນຍາລັກ
- -k - ໄຟລ໌ທີ່ມີຢູ່ແລະມີຊຸດບິດຂອງມັນ
- -L - ດຽວກັນກັບ -h
- -O - ໄຟລ໌ທີ່ທ່ານຢູ່ແມ່ນເຈົ້າຂອງ
- -p - ໄຟລ໌ທີ່ມີຢູ່ແລະເປັນທໍ່ທີ່ມີຊື່
- -r - ໄຟລ໌ທີ່ມີຢູ່ແລະສາມາດອ່ານໄດ້
- -s - ໄຟລ໌ທີ່ມີຢູ່ແລະມີຂະຫນາດໃຫຍ່ກວ່າສູນ
- -S - ໄຟລ໌ທີ່ມີຢູ່ແລະເປັນເຕົ້າຮັບ
- - t - ລາຍລະອຽດຂອງໄຟລ໌ແມ່ນເປີດຢູ່ປາຍສຸດ
- -u - ໄຟລ໌ທີ່ມີຢູ່ແລ້ວແລະທີ່ກໍານົດໄວ້, ຜູ້ໃຊ້ id id ຖືກກໍານົດ
- -w - ໄຟລ໌ທີ່ມີຢູ່ແລ້ວແລະສາມາດຂຽນໄດ້
- -x - ໄຟລ໌ທີ່ມີຢູ່ແລ້ວແລະສາມາດປະຕິບັດໄດ້
ຕົວຢ່າງ:
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
- ຕັນພິເສດ - ໄຟລ໌ແມ່ນອຸປະກອນຕັນທີ່ຫມາຍຄວາມວ່າຂໍ້ມູນແມ່ນອ່ານໃນບລັອກ bytes. ເຫຼົ່ານີ້ແມ່ນໂດຍທົ່ວໄປແລ້ວໄຟລ໌ອຸປະກອນເຊັ່ນ: ຮາດດິດ.
- ລັກສະນະພິເສດ - ໄຟລ໌ແມ່ນປະຕິບັດຕາມທັນທີເມື່ອທ່ານຂຽນມັນແລະເປັນອຸປະກອນທົ່ວໄປເຊັ່ນ: ພອດເຊື່ອ
ການປຽບທຽບເງື່ອນໄຂຫຼາຍ
ດັ່ງນັ້ນທຸກສິ່ງທຸກຢ່າງຢູ່ໄກໄດ້ຖືກປຽບທຽບສິ່ງຫນຶ່ງຕໍ່ຄົນອື່ນແຕ່ວ່າຈະເປັນແນວໃດຖ້າທ່ານຕ້ອງການປຽບທຽບສອງເງື່ອນໄຂ.
ຕົວຢ່າງ: ຖ້າສັດມີ 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
ຄໍາສັ່ງການທົດສອບແມ່ນມີປະໂຫຍດຫຼາຍໃນສະຄິບເນື່ອງຈາກວ່າທ່ານສາມາດທົດສອບມູນຄ່າຂອງຕົວແປຕໍ່ຫນຶ່ງແລະການຄວບຄຸມໂຄງການຄວບຄຸມ. ກ່ຽວກັບເສັ້ນຄໍາສັ່ງມາດຕະຖານ, ທ່ານສາມາດໃຊ້ມັນເພື່ອກວດສອບວ່າໄຟລ໌ມີຢູ່ຫຼື