Panduan Pemula Untuk BASH - Membandingkan Perkara

01 dari 08

Panduan Pemula Untuk BASH - Membandingkan Perkara

Tutorial BASH - Membandingkan Strings.

Di bahagian sebelumnya dalam tutorial BASH, kita melihat kenyataan bersyarat .

Panduan itu sangat panjang tetapi benar-benar hanya menunjukkan bagaimana untuk mengawal aliran logik. Panduan ini menunjukkan cara yang berbeza di mana anda boleh membandingkan pembolehubah.

Imej di atas menunjukkan contoh pertama dalam panduan minggu ini:

#! / bin / bash

name1 = "gary"
name2 = "bob"

jika ["$ name1" = "$ name2"]
kemudian
echo "names match"
lain
echo "nama-nama tidak sepadan"
fi


Dalam skrip di atas saya telah menentukan dua pembolehubah yang dipanggil name1 dan name2 dan memberi mereka nilai "gary" dan "bob". Oleh kerana pembolehubah dikandung antara tanda petikan, mereka dipanggil pembolehubah rentetan yang menjadi lebih relevan apabila tutorial diteruskan.

Semua skrip yang dilakukan adalah membandingkan nilai $ name1 dan $ name2 dan jika mereka sepadan dengan output rentetan "nama yang sepadan" dan jika mereka tidak mengeluarkan rentetan "nama-nama tidak sepadan".

Tanda petikan di sekitar $ name1 dan $ name2 pembolehubah adalah penting kerana jika nilai salah satu dari mereka belum ditetapkan maka skrip akan tetap berfungsi.

Sebagai contoh jika $ name1 tidak pernah ditetapkan maka anda akan membandingkan "" dengan "bob". Tanpa tanda petikan anda akan ditinggalkan dengan = "bob" yang jelas gagal.

Anda juga boleh menggunakan! = Notasi untuk menentukan tidak sama dengan seperti berikut:

jika ["$ name1"! = "$ name2"]

02 dari 08

Panduan Pemula Untuk BASH - Membandingkan Strings

Tutorial BASH - Membandingkan Strings.

Dalam contoh di atas ujian itu membandingkan dua tali yang sama dan bertanya soalan apakah gary datang sebelum bob dalam abjad?

Jelas jawapannya tidak.

Skrip memperkenalkan kurang daripada operator (<). Oleh kerana pengendali yang kurang daripada operator juga digunakan untuk pengalihan, anda perlu melepaskannya dengan slash (\) untuk itu bermakna kurang daripada itu sebabnya dalam skrip di atas saya membandingkan "$ name1" \ <"$ name2".

Sebaliknya kurang daripada jelas lebih besar daripada. Daripada menggunakan \ .

Sebagai contoh

jika ["$ name1" \> "$ name2"]

03 dari 08

Panduan Pemula Untuk BASH - Membandingkan Strings

Tutorial BASH - Membandingkan Strings.

Jika anda ingin menguji sama ada pemboleh ubah mempunyai nilai anda boleh menggunakan ujian berikut:

jika [-n $ name2]

Dalam skrip di atas saya telah menguji sama ada $ name2 telah diberikan nilai dan jika ia bukan mesej "Tidak ada bob, tidak pernah ada bob muncul".

04 dari 08

Panduan Pemula Untuk BASH - Membandingkan Strings

Tutorial BASH - Membandingkan Strings.

Pada slaid yang lepas, kita membahas sama ada pemboleh ubah telah ditetapkan atau tidak. Kadang-kadang walaupun pemboleh ubah mungkin telah ditetapkan tetapi ia mungkin tidak mempunyai nilai.

Sebagai contoh:

name1 = ""

Untuk menguji sama ada pemboleh ubah mempunyai nilai atau tidak (iaitu mempunyai panjang sifar) gunakan -z seperti berikut:

jika [-z $ name1]

Dalam skrip di atas saya telah menetapkan $ name1 kepada rentetan panjang sifar dan kemudian membandingkannya menggunakan -z. Jika $ name1 adalah sifar panjang mesej "gary telah keluar untuk petang" akan dipaparkan.

05 dari 08

Panduan Pemula Untuk BASH - Membandingkan Nombor

Tutorial BASH - Membandingkan Nombor.

Sejauh ini semua perbandingan telah dibuat untuk rentetan. Bagaimana dengan membandingkan nombor?

Skrip di atas menunjukkan contoh membandingkan dua nombor:

#! / bin / bash

a = 4
b = 5

jika [$ a = $ b]
kemudian
echo "4 = 5"
lain
echo "4 tidak sama 5"
fi

Untuk menetapkan pemboleh ubah menjadi nombor, tetapkannya tanpa tanda petikan. Anda kemudiannya boleh membandingkan nombor dengan tanda sama.

Saya lebih suka menggunakan pengendali berikut untuk membandingkan dua nombor:

Jika [$ a -eq $ b]

06 dari 08

Panduan Pemula Untuk BASH - Membandingkan Nombor

Tutorial BASH - Membandingkan Nombor.

Jika anda ingin membandingkan sama ada nombor kurang daripada nombor lain anda boleh menggunakan kurang daripada pengendali (<). Seperti dengan rentetan, anda perlu melarikan diri dari operator kurang dengan slash. (\ <).

Cara yang lebih baik untuk membandingkan nombor adalah menggunakan notasi berikut sebagai berikut:

Sebagai contoh:

jika [$ a -lt $ b]

jika [$ a -le $ b]

jika [$ a -ge $ b]

jika [$ a -gt $ b]

07 dari 08

Panduan Pemula Untuk BASH - Membandingkan Nombor

Tutorial BASH - Membandingkan Nombor.

Akhirnya untuk panduan ini, jika anda ingin menguji sama ada dua nombor adalah berbeza, anda boleh menggunakan sama ada kurang daripada dan lebih besar daripada pengendali bersama-sama (<>) atau -ne seperti berikut:

jika [$ a <> $ b]

jika [$ a -ne $ b]

08 dari 08

Panduan Pemula Untuk BASH - Operator Perbandingan - Ringkasan

Sekiranya anda telah melepaskan tiga bahagian pertama panduan ini, anda boleh menemui mereka dengan mengklik pada pautan berikut:

Di bahagian seterusnya panduan saya akan meliputi aritmetik.