Perintah ujian boleh digunakan pada baris arahan Linux untuk membandingkan satu elemen dengan yang lain tetapi ia lebih sering digunakan dalam skrip shell BASH sebagai sebahagian daripada kenyataan bersyarat yang mengendalikan logik dan aliran program.
Contoh Asas
Anda boleh mencuba arahan ini dengan membuka tetingkap terminal .
ujian 1 -eq 2 && echo "ya" || echo "no"
Perintah di atas boleh dipecahkan seperti berikut:
- ujian - ini bermakna anda akan melakukan perbandingan
- 1 - elemen pertama yang akan anda bandingkan
- -eq (bagaimana anda membandingkan, dalam kes ini, anda sedang menguji sama ada satu nombor sama dengan yang lain)
- 2 - elemen yang anda bandingkan semula elemen pertama
- && - jalankan pernyataan berikut jika hasilnya benar
- echo "yes" - perintah untuk dijalankan jika perbandingan kembali benar
- || - jalankan pernyataan berikut jika hasilnya salah
- echo "no" - perintah untuk dijalankan jika perbandingan kembali palsu
Pada dasarnya, arahan itu membandingkan 1 hingga 2 dan mereka sepadan dengan pernyataan echo "yes" yang dilaksanakan yang memaparkan "ya" dan jika mereka tidak sepadan dengan pernyataan echo "no" yang dilaksanakan yang memaparkan "tidak".
Membandingkan Nombor
Jika anda membandingkan unsur-unsur yang menghurai sebagai nombor, anda boleh menggunakan pengendali perbandingan yang berikut:
- -eq - tidak bernilai 1 nilai yang sama 2
- -ge - bernilai 1 lebih besar atau sama dengan nilai 2
- -gt - nilai 1 lebih besar daripada nilai 2
- -le - adalah nilai 1 kurang daripada atau sama dengan nilai 2
- -lt - nilai 1 kurang daripada nilai 2
- -ne - tidak bernilai 1 tidak sama nilai 2
Contoh:
ujian 1 -eq 2 && echo "ya" || echo "no"
(memaparkan "tidak" ke skrin kerana 1 tidak sama 2)
ujian 1 -ge 2 && echo "ya" || echo "no"
(memaparkan "tidak" ke skrin kerana 1 tidak lebih besar atau sama dengan 2)
ujian 1 -gt 2 && echo "ya" || echo "no"
(memaparkan "tidak" ke skrin kerana 1 tidak lebih besar daripada 2)
ujian 1 -le 2 && echo "ya" || echo "no"
(memaparkan "ya" ke skrin kerana 1 kurang daripada atau sama dengan 2)
ujian 1 -lt 2 && echo "ya" || echo "no"
(memaparkan "ya" ke skrin kerana 1 kurang daripada atau sama dengan 2)
ujian 1 -ne 2 && echo "ya" || echo "no"
(memaparkan "ya" ke skrin kerana 1 tidak sama 2)
Membandingkan Teks
Sekiranya anda membandingkan unsur-unsur yang mengurai sebagai rentetan, anda boleh menggunakan pengendali perbandingan yang berikut:
- = - Adakah tali 1 padanan rentetan 2
- ! = - adalah rentetan 1 berbeza dengan rentetan 2
- -n - ialah panjang tali yang melebihi 0
- -z - ialah panjang rentetan 0
Contoh:
test "string1" = "string2" && echo "yes" || echo "no"
(memaparkan "tidak" ke skrin kerana "string1" tidak sama dengan "string2")
test "string1"! = "string2" && echo "yes" || echo "no"
(memaparkan "ya" ke skrin kerana "string1" tidak sama dengan "string2")
test -n "string1" && echo "yes" || echo "no"
(memaparkan "ya" ke skrin kerana "string1" mempunyai panjang rentetan yang lebih besar daripada sifar)
test -z "string1" && echo "yes" || echo "no"
(memaparkan "tidak" ke skrin kerana "string1" mempunyai panjang rentetan yang lebih besar daripada sifar)
Membandingkan Fail
Jika anda membandingkan fail anda boleh menggunakan pengendali perbandingan yang berikut:
- -ef - Adakah fail mempunyai peranti yang sama dan nombor inode (adakah mereka adalah fail yang sama)
- -nt - Adalah fail pertama yang lebih baru daripada fail kedua
- -ot - Adakah fail pertama lebih lama daripada fail kedua
- -b - Fail ada dan menyekat khusus
- -c - File ada dan bersifat khas
- -d - File ada dan direktori
- -e - Fail ada
- -f - Fail wujud dan merupakan fail biasa
- -g - Fail ada dan mempunyai nombor kumpulan yang ditentukan
- -G - Fail wujud dan pemilik oleh kumpulan pengguna
- -h - Fail wujud dan merupakan pautan simbolik
- -k - Fail wujud dan mempunyai set kecil melekit
- -L - Sama seperti -h
- -O - File ada anda pemiliknya
- -p - Fail wujud dan merupakan paip bernama
- -r - Fail ada dan boleh dibaca
- -s - Fail wujud dan mempunyai saiz yang lebih besar daripada sifar
- -S - Fail ada dan soket
- -t - Deskriptor fail dibuka pada terminal
- -u - Terdapat fail dan set-user-id bit ditetapkan
- -w - Fail ada dan boleh ditulis
- -x - Fail ada dan boleh laku
Contoh:
test / path / to / file1 -n / path / to / file2 && echo "yes"
(Jika file1 lebih baru daripada file2 maka perkataan "ya" akan dipaparkan)
test -e / path / to / file1 && echo "yes"
(jika fail1 ada perkataan "ya" akan dipaparkan)
test -O / path / to / file1 && echo "yes"
(jika anda memiliki file1 maka perkataan "ya" dipaparkan ")
Terminologi
- Blok khas - Fail adalah peranti blok yang bermaksud data dibaca dalam blok bait. Ini biasanya fail peranti seperti cakera keras.
- Watak khas - Fail tersebut bertindak dengan serta-merta apabila anda menulis kepadanya dan biasanya peranti seperti port bersiri
Membandingkan Syarat Pelbagai
Sejauh ini semuanya telah membandingkan satu perkara dengan yang lain tetapi bagaimana jika anda ingin membandingkan dua syarat.
Misalnya, jika seekor haiwan mempunyai 4 kaki dan pergi "moo", mungkin seekor lembu. Hanya memeriksa 4 kaki tidak menjamin bahawa anda mempunyai seekor lembu tetapi memeriksa bunyi yang pasti dibuat.
Untuk menguji kedua-dua syarat sekaligus gunakan pernyataan berikut:
test 4 -eq 4 -a "moo" = "moo" && echo "it is a cow" || echo "itu bukan lembu"
Bahagian utama di sini ialah -a yang bermaksud dan.
Terdapat cara yang lebih baik dan lebih biasa digunakan untuk melakukan ujian yang sama dan itu adalah seperti berikut:
test 4 -eq 4 && test "moo" = "moo" && echo "it is a cow" || echo "itu bukan lembu"
Ujian lain yang mungkin anda ingin buat adalah membandingkan dua kenyataan dan jika salah satu adalah benar output rentetan. Sebagai contoh, jika anda ingin memeriksa bahawa fail bernama "file1.txt" wujud atau fail bernama "file1.doc" wujud, anda boleh menggunakan perintah berikut
test -e file1.txt -o -e file1.doc && echo "file1 exists" || echo "file1 tidak wujud"
Bahagian utama di sini ialah -o yang bermaksud atau.
Terdapat cara yang lebih baik dan lebih biasa digunakan untuk melakukan ujian yang sama dan itu adalah seperti berikut:
test -e file1.txt || test -e file1.doc && echo "file1 exists" || echo "file1 tidak wujud"
Menghapus Kata Kunci Ujian
Anda sebenarnya tidak perlu menggunakan ujian perkataan untuk melakukan perbandingan. Apa yang perlu anda lakukan ialah menyertakan penyataan dalam kurungan persegi seperti berikut:
[-e file1.txt] && echo "file1 exists" || echo "file1 tidak wujud"
[Dan] pada asasnya sama dengan ujian.
Sekarang anda tahu ini anda boleh memperbaiki membandingkan beberapa keadaan seperti berikut:
[4-eq 4] && ["moo" = "moo"] && echo "ia adalah seekor lembu" || echo "itu bukan lembu"
[-e file1.txt] || [-e file1.doc] && echo "file1 exists" || echo "file1 tidak wujud"
Ringkasan
Perintah ujian lebih berguna dalam skrip kerana anda dapat menguji nilai satu pemboleh ubah terhadap yang lain dan mengendalikan aliran program. Pada baris perintah standard, anda boleh menggunakannya untuk menguji sama ada fail ada atau