Skip to main content

Bagaimana Menggunakan Syarat Ujian Dalam Bash Script

iOS App Development with Swift by Dan Armendariz (April 2025)

iOS App Development with Swift by Dan Armendariz (April 2025)
Anonim

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 anda akan bandingkan
  • -eq - Bagaimana anda membandingkan? Dalam kes ini, anda menguji sama ada satu nombor sama dengan yang lain.
  • 2 - Unsur yang anda bandingkan dengan elemen pertama
  • && - Jalankan pernyataan berikut jika hasilnya benar
  • echo "yes" - Perintah untuk berjalan jika perbandingan pulih benar
  • || - Jalankan pernyataan berikut jika hasilnya salah
  • echo "no" - Perintah untuk berjalan jika perbandingan pulangan palsu

Pada dasarnya, arahan itu membandingkan 1 hingga 2 dan jika mereka sepadan, pernyataan "yes" echo dilaksanakan yang memaparkan "ya" dan jika mereka tidak sepadan, pernyataan echo "no" 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

Jika anda membandingkan unsur-unsur yang menghurai 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 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 -nt / 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

Setakat ini, semuanya telah membandingkan satu perkara dengan yang lain, tetapi bagaimana jika anda ingin membandingkan dua syarat?

Contohnya, jika seekor haiwan mempunyai 4 kaki dan pergi "moo," ia mungkin seekor lembu. Hanya memeriksa 4 kaki tidak menjamin bahawa anda mempunyai seekor lembu, tetapi memeriksa bunyi itu 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 dimaksudkan 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 ialah membandingkan dua kenyataan dan jika ada benar, keluarkan rentetan. Sebagai contoh, jika anda ingin memeriksa bahawa fail bernama "file1.txt" wujud atau fail yang 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 tidak.