Bagaimana Menggunakan Syarat Ujian Dalam Bash Script

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:

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:

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:

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:

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

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