Kami sudah cukup membahas hal-hal mendasar dalam panduan kami tentang scripting shell sehingga Anda harus merasa nyaman untuk bereksperimen. Dalam angsuran minggu ini, kami akan menangani beberapa hal yang lebih menyenangkan, seperti kondisi dan pernyataan "if-then".
Dalam bahasa sehari-hari, kami mengatakan bahwa ketentuan adalah persyaratan yang harus dipenuhi agar sesuatu terjadi. Untuk laptop saya untuk dapat terhubung ke internet, ada beberapa kondisi yang harus dipenuhi, seperti memiliki ISP, modem dan / atau router yang aktif, laptop saya sedang menyala, dll. Sangat sederhana, dan jika ada persyaratan tersebut tidak terpenuhi, hasilnya - laptop saya terhubung ke internet - tidak terjadi.
Kondisi di ranah komputasi bekerja sama. Kita dapat menguji apakah string cocok dengan string lain, apakah string tersebut tidak cocok dengan string lain, atau bahkan jika string itu ada sama sekali. Demikian pula, kita dapat menguji argumen numerik untuk melihat apakah ada yang hebat daripada, kurang dari, atau sama dengan yang lain. Untuk mendapatkan sesuatu terjadi setelah kondisi tes terpenuhi, kami menggunakan pernyataan "if-then". Formatnya cukup sederhana.
jika KONDISI
kemudian
perintah1
perintah2
…
komando
fi
Mari kita jalankan skrip uji singkat cepat, ya?
jika menguji $ 1 -gt $ 2
kemudian
echo “$ 1 lebih besar dari $ 2”
fi
Anda akan melihat bahwa hanya jika kondisi itu benar, skrip akan menjalankan perintah berikut. Jika tidak, pernyataan "jika" akan keluar. Jika ada perintah setelah pernyataan "if", maka mereka akan berjalan seperti biasa. Saya menambahkan baris berikut ke bagian akhir skrip kami di atas untuk mengilustrasikan ini:
echo “Ini muncul setelah pernyataan if”
Berikut beberapa operator numerik lain yang mungkin ingin Anda coba:
Sekarang, jika kita mengubah baris pertama dari skrip kita menjadi ini:
jika menguji $ 1 = $ 2
maka kondisi akan menguji apakah keduanya sama. Tapi ada tangkapan di sini !! Penggunaan tanda sama dengan (=) membandingkan dua string, dan bukan angka. Jika Anda ingin membandingkan angka, Anda harus menggunakan operator "-eq" serupa dengan bagaimana kami menggunakan "-gt" di atas.
Sekarang, mari kita buat modifikasi lain:
jika menguji $ 1! = $ 2
Dimasukkannya tanda seru (!) Bertindak sebagai pengubah "tidak". Artinya, ini hanya menjalankan perintah berikut ketika dua string tidak cocok.
Berikut adalah daftar beberapa tes berbasis string yang dapat Anda gunakan:
Saya akui, judul bagian itu jelas merupakan sebuah lelucon yang buruk. Oke, kita tahu cara menjalankan perintah jika tes itu benar, tetapi bagaimana jika kita ingin menjalankan perintah yang berbeda jika itu salah? Kita dapat dengan mudah menyatukan keduanya dengan menambahkan bagian pada pernyataan "jika-maka" - "lain"!
jika KONDISI
kemudian
perintah1
perintah2
…
komando
lain
perintah1
perintah2
…
komando
fi
Mari menyusun skrip sederhana.
Ada segala sesuatu dengan lekukan yang tepat. Jika Anda melihat lebih dekat, Anda akan melihat bahwa kami menggunakan tanda kurung siku ([dan]) bukan perintah tes. Mereka secara fungsional setara untuk tujuan kami, dan Anda jauh lebih mungkin untuk melihat tanda kurung siku karena berbagai alasan, jadi kami akan menggunakannya dari sekarang.
Inilah yang hasilnya akan terlihat seperti:
Semudah itu!
Sekarang Anda tahu bagaimana menggunakan pernyataan "if-then-else", Anda dapat menjalankan skrip yang dapat melakukan tes. Sebagai contoh, Anda dapat menjalankan skrip yang akan menghitung hash md5 dari sebuah file dan kemudian membandingkannya dengan file yang Anda unduh dalam file untuk melihat apakah mereka cocok.
Untuk beberapa poin bonus, Anda dapat membuat skrip yang memiliki loop "untuk", tetapi menggunakan kondisi pengujian alih-alih membaca garis dari daftar file ...
Kami akan membahas beberapa bagian yang lebih menarik dalam Panduan Pemula untuk Pembuatan Kerangka Kerja. Jika Anda melewatkan pelajaran sebelumnya, berikut ini daftar singkat untuk Anda periksa:
Jika Anda telah membuat atau menggunakan skrip yang memanfaatkan kondisi pengujian, pernyataan if-then-else, dan "for" loop, bagikan dengan kami di komentar!