Тестийн командыг Линуксийн тушаалын мөрөнд нэг элементтэй харьцуулахын тулд ашиглаж болох боловч энэ нь BASH бүрхүүлийн скриптүүдэд илүү өргөн хэрэглэгддэг бөгөөд логик болон програмын урсгалыг хянах үүрэгтэй мэдэгдлийн хэсэг болгон ашигладаг.
Үндсэн жишээ
Та эдгээр тушаалуудыг терминалын цонх нээх замаар туршиж үзэж болно.
test 1 -eq 2 && echo "yes" || echo "no"
Дээрх тушаалыг дараах байдлаар задалж болно:
- тест - энэ нь та харьцуулалт хийх гэж байна гэсэн үг юм
- 1 - харьцуулах хамгийн эхний элемент
- -eq (та үүнийг хэрхэн харьцуулах вэ, энэ тохиолдолд та нэг дугаар нь өөр байна уу гэдгийг тестлэх болно)
- 2 - эхний элементийг дахин нэгтгэж байгаа элемент
- & result - үр дүн үнэн эсэхийг дараах илэрхийллийг ажиллуулна
- echo "yes" - хэрэв харьцуулалт үнэн болох юм бол ажиллуулах тушаал
- | | - үр дүн хуурамч байвал дараах илэрхийллийг ажиллуулна
- echo "no" - хэрэв харьцуулалт худал гэж хариулбал ажиллуулах тушаал
Үнэн хэрэгтээ, тушаал нь 1-ээс 2-г харьцуулах бөгөөд "yes" гэсэн тушаалаар "yes" гэж харуулдаг бөгөөд хэрэв тэдгээр нь "no" гэж харуулах цуурай "үгүй" гэсэн үгийг ажиллуулдаг.
Тоонуудыг харьцуулах
Хэрэв та тоонуудыг задлан шинжлэх элементүүдийг харьцуулж байгаа бол дараах харьцуулах операторуудыг ашиглаж болно:
- -eq - утга 1 тэнцүү утга 2 байна
- - нь 1 утгатай тэнцүү буюу тэнцүү байна
- -gt - утга 2 утгаас их байна
- -le - утга 2 утгатай тэнцүү буюу түүнээс бага утгатай
- -lt - утга 2 утгаас бага байна
- -ne - 1 утгатай тэнцүү биш утга 2 байна
Жишээ нь:
test 1 -eq 2 && echo "yes" || echo "no"
(Дэлгэцэнд "үгүй" харуулах нь 1-тэй тэнцүү биш 2)
test 1 -ge 2 && echo "yes" || echo "no"
(Дэлгэцэнд "үгүй" харуулах нь 1-тэй тэнцүү биш юмуу тэнцүү 2)
test 1 -gt 2 && echo "yes" || echo "no"
(1-ээс 2-с ихгүй учраас дэлгэц дээр "үгүй"
test 1 -le 2 && echo "yes" || echo "no"
(1-ээс бага буюу тэнцүү учраас дэлгэц дээр "тийм" харагдана)
test 1 -lt 2 && echo "yes" || echo "no"
(1-ээс бага буюу тэнцүү учраас дэлгэц дээр "тийм" харагдана)
test 1 -ne 2 && echo "yes" || echo "no"
(Дэлгэцэнд "тийм" дэлгэц харуулахгүй. Учир нь 1 нь тэнцүү биш 2)
Текстийг харьцуулах
Хэрэв та тэмдэгт мөрүүдийг задлах элементүүдийг харьцуулж байгаа бол дараах харьцуулах операторуудыг ашиглаж болно:
- = - мөр 1 таарах мөр 2
- ! = - мөр 2-т 1 өөр байна
- -n - 0-ээс их урттай урт
- -z - мөрийн урт 0 байна
Жишээ нь:
test "string1" = "string2" && echo "yes" || echo "no"
("string1" нь "string2" тэнцүү биш учраас "дэлгэцэнд" харагдахгүй)
test "string1"! = "string2" && echo "yes" || echo "no"
("string1" нь "string2" тэнцүү биш учраас "yes" дэлгэцийг харуулдаг)
test -n "string1" && echo "yes" || echo "no"
(дэлгэцийн "тийм" -ийг дэлгэцэнд харуулна. Учир нь "string1" нь уртаас их урттай байна)
test -z "string1" && echo "yes" || echo "no"
("1" тэмдэгт мөр нь уртаас их байх тул "no" дэлгэцийг харуулдаг)
Файлуудыг харьцуулах
Хэрэв та файлуудыг харьцуулж байгаа бол дараах харьцуулах операторуудыг ашиглаж болно:
- -ef - Файлууд нь ижил төхөөрөмж болон inode тоотой адил байна (тэд ижил файл байна уу)
- -nt - Эхний файл нь хоёр дахь файлаас шинэ байна уу
- -ot - Хоёр дахь файлаас хуучин файл байна уу
- -b - Файл байгаа тул тусгай хаалт байна
- -c - Файл байгаа бөгөөд тусгай тэмдэгт юм
- -d - Файл байгаа бөгөөд директор байна
- -e - Файл байгаа
- -f - Файл байгаа бөгөөд энгийн файл юм
- -g - Файл байгаа бөгөөд тодорхой бүлгийн дугаартай байна
- -G - Файл байгаа бөгөөд эзэмшигч нь бүлгийн эзэмшигч байна
- -h - Файл байгаа бөгөөд симбол холбоос юм
- -k - Файл байгаа бөгөөд түүнд наалдамхай бит тохируулагдсан байна
- -L - -h-тэй адил байна
- -O - Та файл байгаа бол эзэмшигч байна
- -p - Файл байгаа бөгөөд нэртэй хоолой байна
- -r - Файл байгаа бөгөөд уншиж болохоор болно
- -s - Файл байгаа бөгөөд тэгээс их хэмжээтэй байна
- -S - Файл байгаа бөгөөд сокет байна
- -t - Файлын тодорхойлогч терминал дээр нээгдэнэ
- -u - Файл байгаа бөгөөд set-user-id бит тохируулагдсан байна
- -w - Файл байгаа бөгөөд бичигдэх боломжтой
- -x - Файл байгаа бөгөөд ажиллах боломжтой болно
Жишээ нь:
test / path / to / file1 -n / path / to / file2 && echo "yes"
(File2 файлаас шинэ байна2 бол "тийм" гэсэн үг гарч ирнэ)
test -e / path / to / file1 && echo "yes"
(хэрэв file1 байгаа бол "тийм" гэсэн үг гарч ирнэ)
test -O / path / to / file1 && echo "yes"
(хэрэв та file1 бол "тийм" гэсэн үг гарч ирнэ) "
Нэр томъёо
- Онцгой хаалт - Файл нь блок төхөөрөмж бөгөөд өгөгдлийг байтуудаар уншдаг гэсэн үг юм. Эдгээр нь ерөнхийдөө хатуу хөтчүүд зэрэг төхөөрөмжийн файлууд юм.
- Character special - Файл нь танд бичихэд нэн даруй ажилладаг ба цуваа порт гэх мэт төхөөрөмж юм
Олон нөхцөлийг харьцуулах
Одоогоор бүх зүйл нэг зүйлийг нөгөөдөө харьцуулж байгаа боловч хоёр нөхцөлийг харьцуулахыг хүсч байгаа юм.
Жишээлбэл, хэрэв амьтан 4 хөлтэй, "монхор" явбал энэ нь үнээ юм. Зөвхөн 4 хөлийг шалгаж үзэхэд үнээтэй гэдгээ батлахгүй ч гэсэн чимээ гарч байгаа эсэхийг шалгана.
Аль нэг нөхцлийг туршихын тулд дараах мэдэгдлийг ашиглана:
test 4 -eq 4 -a "moo" = "moo" && echo "энэ нь үнээ" || echo "энэ нь үнээ биш"
Энд байгаа гол хэсэг нь -a бөгөөд энэ нь.
Нэг ижил тестийг гүйцэтгэх илүү сайн, илүү өргөн хэрэглэгддэг арга байдаг бөгөөд энэ нь:
test 4 -eq 4 && test "moo" = "moo" && echo "энэ нь үнээ" || echo "энэ нь үнээ биш"
Үүнийг хийхийг хүсэж байгаа өөр нэг тест бол хоёр мэдэгдлийг харьцуулах ба хэрэв жинхэнэ тэмдэгт мөр олдвол. Жишээлбэл, хэрэв та "file1.txt" нэртэй файл байгаа эсэхийг шалгана уу эсвэл "file1.doc" гэж нэрлэгдсэн файл байгаа бол дараах тушаалыг ашиглаж болно
test -e file1.txt -o -e file1.doc && echo "file1 exists" || echo "файл1 байхгүй байна"
Энд байгаа гол хэсэг бол -o бөгөөд үүнд зориулагдсан.
Нэг ижил тестийг гүйцэтгэх илүү сайн, илүү өргөн хэрэглэгддэг арга байдаг бөгөөд энэ нь:
test -e file1.txt || test -e file1.doc && echo "file1 exists" || echo "файл1 байхгүй байна"
Тестийн түлхүүр үгсийг устгах
Харьцуулалтыг гүйцэтгэхийн тулд та тестийг ашиглах шаардлагагүй. Та хийх ёстой бүх зүйл нь дөрвөлжин хаалтанд дараах байдлаар бичигдсэн байна:
[-e file1.txt] && echo "file1 exists" || echo "файл1 байхгүй байна"
[Болон] үндсэндээ туршилтын тесттэй ижил утгатай.
Одоо та олон янзын нөхцөлийг дараах байдлаар сайжруулж болно гэдгийг мэдэж байна:
[4-aq 4] && ["moo" = "moo"] && echo "энэ нь үнээ" || echo "энэ нь үнээ биш"
[-e file1.txt] || [-e file1.doc] && echo "file1 exists" || echo "файл1 байхгүй байна"
Хураангуй
Тестийн команд нь скриптүүдэд илүү ашигтай байдаг. Учир нь та нэг хувьсагчийн утгыг нөгөөд шилжүүлж програмын урсгалыг хянах боломжтой. Стандарт тушаалын мөрөнд та үүнийг ашиглаж байгаа эсвэл файл байгаа эсэхийг шалгаж болно