GNU/Linux >> Belajar Linux >  >> Linux

Bash if elif else Pernyataan:Tutorial Komprehensif

Pendahuluan

Skrip Bash membantu mengotomatiskan tugas di mesin Anda. if elif else pernyataan dalam skrip bash memungkinkan pembuatan kasus dan respons bersyarat untuk hasil kode tertentu. if conditional membantu mengotomatiskan proses pengambilan keputusan selama program.

Artikel ini menjelaskan apa itu if elif else pernyataan adalah dan menunjukkan sintaks melalui berbagai contoh.

Prasyarat

  • Mesin dengan OS Linux.
  • Akses ke baris perintah/terminal.
  • Akses ke editor teks seperti Vi/Vim.

Apakah Pernyataan Bash if?

Dalam pemrograman, if pernyataan adalah ekspresi bersyarat. Namun, perintah tersebut diuji di if pernyataan dievaluasi berdasarkan status keluar . Oleh karena itu:

  • Jika perintah selesai berhasil , status keluarnya adalah 0 .
  • Jika pernyataan memunculkan kesalahan , status keluar adalah angka antara 1 dan 255 .

Angka nol untuk sukses dan nilai bukan nol untuk kegagalan tampaknya berlawanan dengan intuisi. Di sebagian besar bahasa pemrograman lain, nol mewakili salah, dan satu (atau lebih besar) mewakili benar. Namun, dalam skrip bash, konvensi UNIX mengembalikan status keluar alih-alih nilai kebenaran, dan keduanya tidak boleh dikacaukan.

Uji contoh perintah kesalahan (1 lebih besar dari 100) di terminal dengan menjalankan:

test 1 -gt 100

Periksa status keluar menggunakan perintah echo:

echo $?

Tes mengembalikan kode keluar 1 , menunjukkan ekspresi gagal.

Demikian pula, periksa contoh perintah yang berhasil dievaluasi (1000 lebih besar dari 100) di terminal dengan:

test 1000 -gt 100

Cetak status keluar untuk mengonfirmasi bahwa perintah berhasil:

echo $?

Tes mengembalikan kode keluar 0 , menunjukkan perintah selesai tanpa kesalahan.

Contoh Pernyataan Bash if

Ikuti petunjuk di bawah ini untuk membuat contoh skrip bash menggunakan if pernyataan.

1. Buka terminal (CTRL +ALT +B ) dan buat skrip contoh untuk menguji bagaimana bash if pernyataan berfungsi:

vi test_script.sh

2. Dalam skrip, tambahkan baris berikut:

echo -n "Please enter a whole number: "
read VAR
echo Your number is $VAR
if test $VAR -gt 100
then
        echo "It's greater than 100"
fi
echo Bye!

Setiap baris dalam skrip melakukan hal berikut:

  • Baris 1-3 memberikan instruksi untuk memasukkan nomor melalui konsol. Angka tersebut dibacakan ke dalam variabel yang disebut VAR dan dicetak.
  • Baris 4 memulai if pernyataan dan memeriksa status keluar untuk perintah tepat setelah ($VAR -gt 100 ).
  • Baris 5-6 menandakan dimulainya perintah untuk dieksekusi hanya jika pernyataan pada baris 4 berhasil diselesaikan (dengan status keluar 0), artinya kita memasukkan angka yang lebih besar dari 100.
  • Baris 7 menandakan akhir dari if pernyataan.
  • Baris 8 berada di luar pernyataan dan berjalan seperti yang diharapkan, terlepas dari if hasil.

3. Simpan dan tutup Vim:

:wq

4. Selanjutnya, buat file tersebut dapat dieksekusi:

chmod +x test_script.sh

5. Terakhir, jalankan skrip dengan:

./test_script.sh

Script menampilkan pesan yang berbeda berdasarkan nomor yang dimasukkan. Jalankan skrip beberapa kali dan uji nomor lain untuk mengonfirmasi perilakunya.

Bash jika Sintaks Pernyataan

Sintaks dasar untuk bash if pernyataannya adalah:

if <commands>
then
        <commands>
fi

Setiap kata kunci memiliki fungsi tertentu:

  • if menandakan dimulainya pernyataan. Perintah setelahnya adalah perintah di mana pemeriksaan status keluar berlaku.
  • then menjalankan perintah hanya jika tinjauan sebelumnya berhasil diselesaikan.
  • fi menutup pernyataan if.

Menyertakan perintah pengujian dalam tanda kurung yang berbeda menghasilkan metode eksekusi yang berbeda untuk if penyataan. Tabel di bawah ini memberikan deskripsi singkat serta kasus penggunaan untuk setiap jenis braket.

Sintaks Apa itu Kapan harus digunakan
if ( <commands> ) Subkulit dieksekusi dalam subproses. Ketika perintah mempengaruhi shell atau lingkungan saat ini. Perubahan tidak tetap ada saat subkulit selesai.
if (( <commands> )) Ekstensi bash. Gunakan untuk operasi aritmatika dan manipulasi variabel gaya-C.
if [ <commands> ] POSIX bawaan, alias untuk test <commands> . Membandingkan angka dan menguji apakah file ada.
if [[ <commands> ]] Ekstensi bash, versi lanjutan dari tanda kurung siku tunggal. String cocok dengan pola wildcard.

Di bawah ini adalah contoh skrip bash yang menggunakan setiap jenis braket dengan penjelasan yang lebih mendalam.

Sintaks Tanda Kurung Tunggal

Menggunakan tanda kurung tunggal dalam skrip bash membuat subkulit. Saat digabungkan dengan if pernyataan, subproses selesai sebelum melanjutkan program. if menganalisis status keluar dan bertindak sesuai dengan itu.

Bash if pernyataan dengan sintaks tanda kurung tunggal terlihat seperti berikut:

if ( <commands> )
then
        <commands>
fi

Coba contoh di bawah ini untuk melihat bagaimana sub-proses berperilaku bersama dengan if pernyataan:

1. Buat skrip menggunakan Vim:

vi single_parentheses.sh

2. Tambahkan baris kode berikut ke skrip:

outer_variable=Defined
echo Before if:
echo inner_variable = $inner_variable
echo outer_variable = $outer_variable
if (
        echo Inside subshell:
        inner_variable=Defined
        echo inner_variable = $inner_variable
        outer_variable=Changed
        echo outer_variable = $outer_variable
)
then
        echo After then:
        echo inner_variable = $iner_variable
        echo outer_variable = $outer_variable
fi
echo After fi:
echo inner_variable = $inner_variable
echo outer_variable = $outer_variable

Program melakukan hal berikut:

  • Baris 1 membuat variabel bernama outer_variable tempat kita menyimpan string Defined .
  • Baris 2-4 cetak variabel ke konsol. Saat ini, outer_variable memiliki string yang tersimpan di dalamnya, sedangkan inner_variable kosong.
  • Baris 5 memulai if pernyataan dan sub-proses, yang dibatasi oleh tanda kurung tunggal.
  • Baris 6-11 simpan string di dalam inner_variable dan ubah outer_variable ke string yang berbeda. Kedua nilai dicetak ke konsol, dan sub-proses diakhiri dengan kode keluar. Dalam hal ini, sub-proses berakhir dengan sukses dengan kode keluar 0 .
  • Baris 12-16 jalankan setelah sub-proses dan cetak nilai variabel. Namun, nilainya berubah kembali seperti sebelum if penyataan. Sub-proses hanya menyimpan nilai secara lokal dan tidak secara global.
  • Baris 16-19 jalankan setelah perintah di then ayat. Nilai tetap tidak berubah di luar pernyataan.

3. Simpan skrip dan tutup editor:

:wq

4. Jadikan skrip dapat dieksekusi:

chmod +x single_parentheses.sh

5. Terakhir, jalankan contoh untuk menguji hasilnya:

./single_parentheses.sh

Output mencetak status variabel saat program berjalan.

Sintaks Tanda Kurung Ganda

Sintaks kurung ganda untuk bash if pernyataannya adalah:

if (( <commands> ))
then
        <commands>
fi

Konstruksi tanda kurung ganda di bash memungkinkan:

  • Evaluasi aritmatika . Mendefinisikan variabel sebagai a=$(( 1+1 )) menghitung persamaan dan menetapkan a ke 2.
  • Manipulasi variabel gaya-C. Misalnya, menambah variabel dengan (( a++ )) .

Saat menggunakan sintaks tanda kurung ganda dalam if pernyataan, evaluasi berperilaku berbeda. Misalkan ekspresi mengevaluasi ke 0 , lalu if ujian tidak lulus.

Coba contoh berikut untuk melihat cara kerja tanda kurung ganda:

1. Buat skrip bash di terminal:

vi double_parentheses.sh

2. Tambahkan kode berikut ke double_parentheses.sh :

variable=-2
echo Before first if: $variable
if (( variable++ ))
then
        echo Incremented ++ style: $variable
fi
echo After first if: $variable
if (( variable=variable+1 ))
then
        echo Incremented arithmetically $variable
fi
echo After second if: $variable

Setiap nomor baris dalam skrip melakukan hal berikut:

  • Baris 1 mendefinisikan variabel dan menyetel nilainya ke -2 .
  • Baris 3-5 menambah nilai C-style di dalam tanda kurung ganda dan memeriksa nilainya. Jika variabelnya bukan nol, if akan mencetak pesan ke konsol.
  • Baris 8-10 menambah variabel satu per satu menggunakan notasi aritmatika biasa dan mencetak pesan jika variabel bukan nol.

3. Simpan skrip dan tutup Vim:

:wq

4. Ubah izin skrip menjadi yang dapat dieksekusi:

chmod +x double_parentheses.sh

5. Jalankan script untuk melihat hasilnya:

./double_parentheses.sh

Sintaks Kurung Tunggal

Tanda kurung tunggal adalah nama lain dari test perintah dan utilitas POSIX standar tersedia untuk semua shell. Sintaks dasarnya adalah:

if [ <commands> ]
then
        <commands>
fi

Bash pertama if contoh yang disediakan dalam tutorial ini (test_script.sh ) bekerja sama baiknya dengan sintaks alternatif:

echo -n "Please enter a whole number: "
read VAR
echo Your number is $VAR
if [ $VAR -gt 100 ]
then
        echo "It's greater than 100"
fi
echo Bye!

Jalankan skrip untuk mengonfirmasi bahwa outputnya setara. Untuk dokumentasi lengkap dan detail tentang penggunaan sintaks braket, jalankan perintah man pada test utilitas:

man test

Sintaks Kurung Ganda

Sintaks kurung ganda di bash if scripts adalah pilihan terbaik jika portabilitas tidak diperlukan. Kurung ganda lebih unggul daripada kurung tunggal dan mencakup banyak opsi lanjutan. Sintaksnya adalah:

if [[ <commands> ]]
then
        <commands>
fi

Coba contoh di bawah ini untuk melihat cara kerja pencocokan string karakter pengganti di if perintah:

1. Buat file skrip shell bernama double_brackets :

vi double_brackets.sh

2. Tambahkan kode berikut:

if [[ $USER == k* ]]
then
        echo Hello $USER
fi
echo Bye!

3. Script memeriksa apakah huruf awal nama pengguna adalah k dan mengirim pesan halo jika ya. Simpan dan tutup skrip:

:wq

4. Jadikan file tersebut dapat dieksekusi dengan chmod:

chmod +x double_brackets.sh

5. Jalankan program dengan:

./double_brackets.sh

Jenis Pernyataan Bersyarat Bash Lainnya

if pernyataan hanya melakukan satu pemeriksaan bersyarat. Ubah if dengan jenis persyaratan bash lainnya untuk membuat penilaian yang kompleks.

jika lain Pernyataan

if else pernyataan menyediakan satu metode untuk mendefinisikan tindakan yang berbeda berdasarkan output dari kondisi yang diperiksa. Sintaks dasarnya adalah:

if <command>
then
	<commands>
else
	<commands>
fi

Contoh berikut menunjukkan bagaimana if else pekerjaan bersyarat:

1. Buat skrip baru menggunakan Vim:

vi if_else.sh

2. Masukkan kode berikut ke dalam skrip:

echo -n "Please enter a whole number: "
read VAR
echo Your number is $VAR
if [ $VAR -gt 100 ]
then
        echo "It's greater than 100"
else
        echo "It's less than 100"
fi
echo Bye!

Pernyataan memeriksa output perintah di baris 4 dan mencetak pesan deskriptif berdasarkan hasil:

  • Jika angka yang dimasukkan lebih besar dari 100 , program memasuki baris 6 dan mencetak pesan.
  • Jika jumlahnya kurang dari 100 , pesan di else klausa (baris 8 ) mencetak ke konsol.

3. Simpan skrip dan tutup Vim:

:wq

4. Jadikan skrip dapat dieksekusi:

chmod +x if_else.sh

5. Terakhir, jalankan skrip beberapa kali dan uji berbagai nilai:

./if_else.sh

Pernyataan if elif

elif klausa yang digabungkan dengan if else pernyataan menciptakan beberapa pemeriksaan bersyarat. if elif menciptakan serangkaian pemeriksaan dengan hasil yang berbeda. Sintaksnya adalah:

if <command>
then
        <commands>
elif <command>
then
        <commands>
else
        <commands>
fi

Untuk membuat skrip menggunakan elif :

1. Buat file shell bernama elif :

vi elif.sh

2. Dalam elif.sh file, tambahkan kode contoh berikut:

echo -n "Please enter a whole number: "
read VAR
echo Your number is $VAR
if [ $VAR -gt 100 ]
then
        echo "It's greater than 100"
elif [ $VAR -lt 100 ]
then
        echo "It's less than 100"
else
        echo "It's exactly 100"
fi
echo Bye!

Contoh menambahkan elif periksa baris 7 untuk melihat apakah angka yang dimasukkan kurang dari 100. Jika pernyataan pada baris 4 dan 7 keduanya gagal, program melompat ke klausa else.

3. Simpan dan tutup file:

:wq

4. Buat elif.sh file yang dapat dieksekusi:

chmod +x elif.sh

5. Jalankan skrip beberapa kali dan periksa perilaku untuk nomor yang berbeda:

./elif.sh

Tambahkan beberapa elif klausa untuk cabang pernyataan untuk pemeriksaan rinci lebih lanjut. Untuk contoh di mana if dan elif seri pola tumbuh, opsi yang lebih baik adalah menggunakan case pernyataan.

Pernyataan if bersarang

if . bertingkat pernyataan menambahkan cabang di dalam if . Secara khusus, ketika sebuah perintah melewati pemeriksaan if pertama, perintah tersebut melewati pemeriksaan baru untuk memfilter hasilnya lebih lanjut. Sintaksnya adalah:

if <commands>
then
        if <commands>
        then
                <commands>
        fi
fi

Bersarang if biasanya digunakan untuk mencari melalui array multi-dimensi. Namun, cobalah untuk menghindari lebih dari dua atau tiga if pernyataan untuk mengurangi kompleksitas program. Pikirkan kembali logika kode saat if . bersarang terus berkembang secara mendalam.


Linux
  1. Cara Menggunakan if else Conditionals Statement di Bash Script

  2. Pernyataan Bash If-Else Dengan Contoh

  3. 4 Contoh Pernyataan Awk If ( if, if else, if else if, :? )

  1. Tutorial Status Keluar Bash Shell dengan Contoh Praktis

  2. 4 Contoh Pernyataan Bash If ( If then fi, If then else fi, If elif else fi, Nested if )

  3. 5 Contoh Pernyataan Kasus Bash

  1. Tutorial Penyelesaian Bash yang Mudah??

  2. Bash/sh pernyataan 'jika lain'

  3. Naikkan kesalahan dalam skrip Bash