Тестийн нөхцөлийг Bash Script дотор ашиглах

Тестийн командыг Линуксийн тушаалын мөрөнд нэг элементтэй харьцуулахын тулд ашиглаж болох боловч энэ нь BASH бүрхүүлийн скриптүүдэд илүү өргөн хэрэглэгддэг бөгөөд логик болон програмын урсгалыг хянах үүрэгтэй мэдэгдлийн хэсэг болгон ашигладаг.

Үндсэн жишээ

Та эдгээр тушаалуудыг терминалын цонх нээх замаар туршиж үзэж болно.

test 1 -eq 2 && echo "yes" || echo "no"

Дээрх тушаалыг дараах байдлаар задалж болно:

Үнэн хэрэгтээ, тушаал нь 1-ээс 2-г харьцуулах бөгөөд "yes" гэсэн тушаалаар "yes" гэж харуулдаг бөгөөд хэрэв тэдгээр нь "no" гэж харуулах цуурай "үгүй" гэсэн үгийг ажиллуулдаг.

Тоонуудыг харьцуулах

Хэрэв та тоонуудыг задлан шинжлэх элементүүдийг харьцуулж байгаа бол дараах харьцуулах операторуудыг ашиглаж болно:

Жишээ нь:

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)

Текстийг харьцуулах

Хэрэв та тэмдэгт мөрүүдийг задлах элементүүдийг харьцуулж байгаа бол дараах харьцуулах операторуудыг ашиглаж болно:

Жишээ нь:

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" дэлгэцийг харуулдаг)

Файлуудыг харьцуулах

Хэрэв та файлуудыг харьцуулж байгаа бол дараах харьцуулах операторуудыг ашиглаж болно:

Жишээ нь:

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 бол "тийм" гэсэн үг гарч ирнэ) "

Нэр томъёо

Олон нөхцөлийг харьцуулах

Одоогоор бүх зүйл нэг зүйлийг нөгөөдөө харьцуулж байгаа боловч хоёр нөхцөлийг харьцуулахыг хүсч байгаа юм.

Жишээлбэл, хэрэв амьтан 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 байхгүй байна"

Хураангуй

Тестийн команд нь скриптүүдэд илүү ашигтай байдаг. Учир нь та нэг хувьсагчийн утгыг нөгөөд шилжүүлж програмын урсгалыг хянах боломжтой. Стандарт тушаалын мөрөнд та үүнийг ашиглаж байгаа эсвэл файл байгаа эсэхийг шалгаж болно