Panduan Permulaan untuk Shell Scripting 4 Keadaan & Kenyataan Jika-Lalu
Kami telah membahas cukup dasar-dasar dalam panduan kami mengenai skrip shell yang perlu anda selesaikan untuk bereksperimen. Dalam ansuran minggu ini, kami akan menangani beberapa perkara yang lebih menyeronokkan, seperti syarat dan kenyataan "jika-kemudian".
Apa Syarat-Syarat?
Dalam bahasa sehari-hari, kita mengatakan bahawa syarat adalah keperluan yang mesti dipenuhi untuk sesuatu yang berlaku. Untuk komputer riba saya boleh menyambung ke internet, terdapat beberapa syarat yang mesti dipenuhi, seperti mempunyai ISP, modem dan / atau router yang sedang dihidupkan, komputer riba saya sedang aktif, dan lain-lain. Ia agak mudah, dan jika ada daripada keperluan tersebut tidak dipenuhi, hasilnya - komputer riba saya yang menghubungkan ke internet - tidak berlaku.
Syarat dalam bidang pengkomputeran juga sama. Kita boleh menguji sama ada rentetan sepadan rentetan lain, sama ada ia tidak sepadan dengan tali lain, atau walaupun ia wujud sama sekali. Begitu juga, kita boleh menguji hujah-hujah berangka untuk melihat apakah yang lebih besar daripada, kurang daripada, atau sama dengan yang lain. Untuk mendapatkan sesuatu yang berlaku selepas syarat-syarat ujian dipenuhi, kami menggunakan kenyataan "jika-kemudian". Format mereka agak mudah.
jika SYARAT
kemudian
command1
command2
...
commandn
fi
Jika Penyata
Mari kita jalankan skrip ujian sedikit cepat, bolehkah kita?
jika ujian $ 1 -gt $ 2
kemudian
echo "$ 1 lebih besar daripada $ 2"
fi
Anda akan melihat bahawa hanya apabila keadaan itu benar akan skrip melaksanakan arahan berikut. Jika tidak, pernyataan "jika" akan keluar. Sekiranya terdapat sebarang arahan selepas pernyataan "jika", maka ia akan dijalankan seperti biasa. Saya menambah baris berikut pada akhir skrip kami di atas untuk menggambarkan ini:
echo "Ini datang selepas kenyataan jika"
Berikut adalah beberapa pengendali berangka yang anda ingin cuba:
- -eq: bersamaan dengan
- -ne: tidak sama dengan
- -lt: kurang daripada
- -le: kurang daripada atau sama dengan
- -gt: lebih besar daripada
- -ge: lebih besar daripada atau sama dengan
Ujian Strings
Sekarang, jika kita mengubah suai baris pertama skrip kita menjadi ini:
jika ujian $ 1 = $ 2
maka keadaan akan menguji jika kedua-duanya sama. Terdapat tangkapan di sini walaupun !! Penggunaan tanda sama (=) membandingkan dua rentetan, dan bukan nombor. Jika anda ingin membandingkan nombor, anda perlu menggunakan operator "-eq" sama seperti cara kami menggunakan "-gt" di atas.
Sekarang, mari buat pengubahsuaian lain:
jika ujian $ 1! = $ 2
Kemasukan titik seru (!) Bertindak sebagai pengubah "tidak". Iaitu, ia hanya menjalankan arahan berikut apabila kedua-dua rentetan tidak sepadan.
Inilah senarai beberapa ujian berasaskan rentetan yang anda boleh gunakan:
- rentetan: menggunakan argumen dengan sendirinya menguji jika rentetan tidak kosong (null) atau tidak ditakrifkan dalam beberapa cara
- -n string: ini akan menguji jika rentetan tidak kosong dan ditakrifkan
- -z string: ini akan menguji jika rentetan kosong dan ditakrifkan dengan cara itu
Apa Yang Lain Mengenai Jika?
Saya akan mengakui, tajuk seksyen itu pasti tidak baik. Okay, kita tahu bagaimana untuk melaksanakan arahan jika ujian itu benar, tetapi bagaimana jika kita mahu melaksanakan arahan yang berlainan jika palsu? Kami dengan mudah boleh meletakkan kedua-dua itu dengan menambah seksyen ke pernyataan "jika-kemudian" kami - yang "lain"!
jika SYARAT
kemudian
command1
command2
...
commandn
lain
command1
command2
...
commandn
fi
Mari kita sediakan skrip mudah.
Ada segalanya dengan lekukan yang betul. Jika anda melihat dengan teliti, anda akan melihat bahawa kami menggunakan kurungan persegi ([dan]) dan bukannya arahan ujian. Mereka bersamaan dengan fungsi untuk tujuan kami, dan anda lebih cenderung untuk melihat kurungan persegi untuk pelbagai sebab, jadi kami akan menggunakannya dari sekarang.
Berikut adalah output yang akan kelihatan seperti:
Itu mudah!
Apa yang saya buat sekarang?
Sekarang bahawa anda tahu bagaimana menggunakan pernyataan "if-then-else", anda boleh menjalankan skrip yang boleh melakukan ujian. Sebagai contoh, anda boleh menjalankan skrip yang akan mengira hash md5 fail dan kemudian bandingkannya dengan yang anda muat turun dalam fail untuk melihat sama ada ia sepadan.
Untuk beberapa mata bonus, anda boleh membuat skrip yang mempunyai "untuk" gelung, tetapi menggunakan syarat ujian dan bukannya membaca garis keluar dari fail senarai ...
Kami mendapat beberapa bahagian yang lebih menarik dalam Panduan Permulaan kami untuk Shell Scripting. Jika anda terlepas pelajaran terdahulu, inilah senarai cepat untuk anda menyemak:
- Asas-asas Shell Scripting
- Menggunakan Untuk Gelung
- Lebih Perintah Asas
- Apakah perbezaan antara cangkang Linux??
- Cara menggunakan Ekspresi Biasa Biasa
Sekiranya anda telah membuat atau menggunakan skrip yang menggunakan syarat-syarat ujian, jika-kemudian-lain kenyataan, dan "untuk" gelung, berkongsi dengan kami di dalam komen!