GNU/Linux >> Belajar Linux >  >> Linux

Memahami Bash If Else dan Pernyataan Bersyarat lainnya

Jika Anda pernah menulis skrip Bourne Again Shell (Bash), Anda tahu bahwa skrip tersebut dapat dengan cepat menjadi rumit saat Anda menambahkan lebih banyak logika ke dalamnya. Bagaimana cara menghindari mengacaukan skrip Anda? Pernyataan bersyarat, seperti Bash if else, adalah salah satu cara untuk menambahkan logika, yang memungkinkan skrip Anda membuat keputusan berdasarkan kondisi tertentu.

Dalam tutorial ini, Anda akan belajar cara menggunakan Bash if-else dan pernyataan kasus untuk menulis skrip Bash bebas kesalahan. Semua ini dengan beberapa praktik terbaik untuk menulis skrip Bash.

Siap? Baca terus dan bawa skrip Bash Anda ke level berikutnya!

Prasyarat

Tutorial ini akan menjadi demonstrasi langsung. Jika Anda ingin mengikuti, pastikan Anda memiliki

  • Sistem Linux atau Windows dengan Bash diinstal – Windows Subsystem for Linux (WSL) adalah pilihan yang sangat baik untuk pengguna Windows.
  • Editor kode/teks.

Mengapa Menggunakan Pernyataan Bersyarat?

Pernyataan bersyarat adalah salah satu alat terpenting dalam skrip Bash karena memungkinkan Anda membuat keputusan dalam skrip berdasarkan kondisi tertentu.

Misalnya, Anda bisa menggunakan pernyataan bersyarat untuk memeriksa apakah ada file sebelum mencoba menghapusnya. Atau Anda dapat menggunakannya untuk memeriksa apakah pengguna memiliki izin untuk mengakses sumber daya tertentu.

Pernyataan bersyarat membuat skrip Anda lebih fleksibel dan kuat. Bayangkan Anda sedang menulis skrip untuk menghapus semua file dalam direktori. Dengan pernyataan bersyarat, Anda dapat menghapus file yang lebih lama dari 30 hari.

Memahami Pernyataan IF

Cukup dengan pengenalan skrip Bash, dan buat tangan Anda kotor. Perhatikan lebih dekat salah satu pernyataan kondisional yang paling populer, if pernyataan.

if pernyataan adalah cara paling dasar untuk menambahkan persyaratan ke skrip Bash Anda, dengan sintaks berikut:

  • Dimulai dengan kata kunci if, Anda menentukan [[kondisi]] ​​untuk dipenuhi. Kode di dalam pernyataan if kemudian dijalankan, dan pernyataan tersebut diakhiri dengan kata kunci fi.
  • Kata kunci then memisahkan kondisi dari kode (pernyataan) yang akan dijalankan jika kondisi terpenuhi. Kode ini dapat terdiri dari beberapa baris jika Anda menambahkan titik koma (;) sebagai pemisah baris.
if [[ condition ]]; then
	statement
fi

Misalkan Anda membuat skrip yang meminta nama pengguna yang benar untuk sistem Anda sebelum Anda masuk:

1. Buka terminal Anda dan buat bash_if_demo.sh baru file menggunakan editor teks pilihan Anda.

nano bash_if_demo.sh

2. Salin dan tempel kode berikut ke bash_if_demo.sh your Anda file, simpan perubahan, dan tutup file.

Kode di bawah ini meminta nama pengguna, dan jika yang benar dimasukkan, kode akan mencetak pesan 'selamat datang kembali' bersama dengan tanggal dan waktu saat ini.

Anda dapat mencatat tanggal dan waktu pengguna mencoba mengakses sistem untuk analisis lebih lanjut.

Baris pertama #!/bin/bash (shebang) memberi tahu sistem penerjemah mana yang akan digunakan untuk menjalankan sisa kode dalam file. Dalam hal ini, Anda menggunakan bash.

#!/bin/bash
# Prints a question to the screen.
echo "Whats your name?"
# Reads keyboard input and stores it in the $NAME variable
read NAME
# Starts the if statement - checks to see if the $NAME variable's value 
# is equal to ATA. If it is, the code inside runs. Otherwise, the code will not run.
if [ $NAME == "ATA" ]
then
	# Prints a message to the screen, only if the value stored in the $NAME variable 
	# is equal to ATA.
  echo "Welcome back ATA!"
fi
# Prints the current date and time to the screen. Since this line is outside 
# of the if statement, it always runs regardless of the $NAME variable's value.
date

3. Terakhir, jalankan perintah di bawah ini untuk menjalankan skrip bash_if_demo.sh untuk melihat fungsinya.

bash bash_if_demo.sh

Perhatikan bahwa apa pun shell Bash yang Anda gunakan, Anda harus menambahkan bash sebelum nama skrip, sehingga sistem akan menggunakan Bash untuk mengeksekusi kode Anda.

Masukkan ATA lalu tekan Enter, dan Anda akan melihat output berikut.

Anda tidak akan mendapatkan pesan selamat datang jika Anda memasukkan apa pun selain "ATA.", hanya tanggal dan waktu saat ini. Mengapa? Karena pernyataan if Anda memeriksa nilai yang tepat seperti yang disimpan dalam variabel $NAME.

Perhatikan bahwa jika pernyataan peka huruf besar/kecil. Jadi, “ata”, “aTa”, “Ata”, dll., tidak sama dengan “ATA”.

Menguji kode Anda dengan masukan yang berbeda adalah praktik terbaik untuk memastikan kode berperilaku seperti yang diharapkan.

Memahami Pernyataan Bersarang Jika

Anda baru saja mempelajari dasar-dasar penulisan pernyataan if, dan itu sudah cukup baik jika Anda tidak menulis kode yang rumit. Tetapi jika Anda melakukannya, coba tulis pernyataan if bersarang untuk memperluas pernyataan kondisional Anda. Pernyataan if bersarang adalah pernyataan if yang berisi satu atau lebih pernyataan if.

Di bawah ini adalah sintaks dasar untuk pernyataan if bersarang, di mana:

  • if [[ conditions ]] – Bagian luar if pernyataan yang berisi kode yang hanya berjalan jika kondisi terpenuhi. Dalam hal ini, if . lainnya pernyataan).
  • if [[ condition2 ]] – Bagian dalam if pernyataan yang berisi kode yang hanya berjalan jika kedua kondisi terpenuhi.
if [[ conditions

]]; then
	if [[ condition2 ]]; then
		statement
	fi
fi

Meningkatkan kode sebelumnya dengan menyetel if pernyataan yang meminta kata sandi:

1. Buat file baru bernama bash_nested_if_demo.sh dengan editor teks Anda.

nano bash_nested_if_demo.sh

2. Isi kode di bawah ini ke bash_nested_if_demo.sh file, simpan perubahan, dan tutup berkas.

Kode di bawah ini meminta nama dan kata sandi. Jika kedua kondisi terpenuhi untuk nama dan sandi, kode akan mencetak pesan. Jika tidak, kode tidak akan mencetak pesan apa pun selain dari tanggal dan waktu saat ini.

#!/bin/bash
# Prints a message asking for a name.
echo "Whats your name?"
# Reads input from the keyboard.
read NAME
# Check if the $NAME variable's value is equal to "ATA."
if [ $NAME == "ATA" ]
 then
 # Prints a message asking for a password.
 echo "Password"
 # Reads input from the keyboard.
 read Password
   # Nested if statement - Check if the $Password variable's value equals "pwd123."
   if [ "$Password" == "pwd123" ]; then
     # Prints a message if both conditions for name and password are met.
     echo "You logged in as ATA"
   fi
fi
# Prints the current date and time
date

3. Terakhir, jalankan perintah di bawah ini untuk menjalankan bash_nested_if_demo.sh naskah.

bash bash_nested_if_demo.sh

Masukkan ATA untuk nama dan pwd123 untuk kata sandi.

Jika Anda memasukkan apa pun selain "ATA" atau "pwd123", satu-satunya pesan yang akan Anda dapatkan adalah tanggal dan waktu saat ini. Mengapa? Kedua kondisi dalam pernyataan if bersarang Anda harus dipenuhi.

Memahami Pernyataan JIKA LAIN

Pernyataan if adalah alat yang kuat dan umum digunakan dalam skrip Bash. jika pernyataan dapat membantu membuat keputusan dalam skrip Anda. Namun perlu diperhatikan bahwa ada beberapa kelemahan dalam menggunakan pernyataan if.

Kelemahan utama adalah bahwa pernyataan if dapat membuat kode Anda sulit dibaca dan dipelihara, terutama jika Anda memiliki pernyataan if bersarang di dalam pernyataan if lainnya. Gaya penulisan skrip ini dapat menyebabkan apa yang dikenal sebagai “kode spageti” — sulit dibaca dan dipahami.

Jadi bagaimana Anda membuat kode Anda tidak terlihat rumit? Gunakan pernyataan if else alih-alih sekumpulan pernyataan if bersarang. Kata kunci else memungkinkan Anda untuk menentukan kode yang akan dijalankan jika kondisi dalam pernyataan if tidak terpenuhi.

Lihat sintaks pernyataan IF ELSE di bawah ini, di mana:

  • if [[ conditions ]]if pernyataan, yang berisi kode (statement1 ) yang akan dijalankan jika kondisi terpenuhi.
  • elseelse pernyataan berisi kode (statement2 ) yang akan dijalankan jika kondisi di if pernyataan tidak terpenuhi.
if [[ conditions ]]; then
	statement1
else
	statement2
fi

Misalkan Anda membuat permainan angka, yang mengambil angka acak sebagai masukan dari pengguna:

1. Buat file baru bernama bash_if_else_demo.sh.

nano bash_if_else_demo.sh

2. Tambahkan kode berikut ke bash_if_else_demo.sh your Anda file, simpan perubahan, dan tutup file.

Kode di bawah ini mencetak pesan yang meminta nomor keberuntungan pengguna dan mencetak pesan Anda Menang jika input pengguna adalah angka genap. Jika tidak (lain), kode akan mencetak pesan Anda Hilang jika input pengguna adalah angka ganjil.

#!/bin/bash
# Prints a message asking for the user's lucky number
echo -n "Enter You Lucky Number:"
# Reads the keyboard input.
read var
# Checks if the value is an even number.
if [ $((var%2)) == 0 ]; then
 # Prints a message if the condition is met
 echo "You Won!"
else
 # Prints a message if the condition is not met
 echo "You Lost!"
fi

3. Sekarang, jalankan perintah berikut untuk menjalankan skrip bash_if_else_demo.sh.

bash bash_if_else_demo.sh

Jika Anda memasukkan angka genap, pesan "Anda Menang!" tercetak, seperti yang Anda lihat di bawah ini. Tetapi jika Anda memasukkan angka ganjil, pesan "Kamu Kalah!" mencetak sebagai gantinya.

Coba perbaiki kode Anda dengan menambahkan pernyataan lain yang memeriksa apakah pengguna memasukkan huruf karakter khusus sebagai gantinya.

Memahami Pernyataan Kasus

Sejauh ini, Anda telah melihat dua cara untuk membuat keputusan dalam skrip Bash Anda:if pernyataan dan else pernyataan. Namun ada cara lain untuk membuat keputusan dalam skrip Anda, case pernyataan.

case pernyataan ini mirip dengan if pernyataan karena memungkinkan Anda untuk menentukan kode yang akan dijalankan berdasarkan suatu kondisi. Tetapi hal yang baik tentang pernyataan kasus adalah bahwa Anda akan memiliki sintaks yang lebih tepat dan ringkas daripada if bersarang. pernyataan.

Sintaks untuk pernyataan kasus adalah sebagai berikut:

  • case $VAR incase pernyataan yang mengambil $VAR pengujian variabel terhadap pola yang Anda tentukan hingga kecocokan ditemukan.
  • pattern1) dan pattern2) -Pola yang akan diuji, yang menjalankan kode (statement1 atau statement2 ) setelah pola ditemukan.
  • esac – Mengakhiri pernyataan kasus.
case $VAR in
pattern1)
    statement1
    ;;
pattern2)
    statement2
    ;;
esac

Misalkan Anda memerlukan skrip yang meminta pengguna untuk memasukkan nama negara mereka dan merespons dengan pesan yang menampilkan bahasa yang digunakan di negara tersebut.

1. Buat file baru bernama bash_case_demo.sh.

nano bash_case_demo.sh

2. Isi kode di bawah ini ke bash_case_demo.sh file, simpan perubahan dan tutup file.

Kode di bawah ini menanyakan nama negara kepada pengguna dan mencetak bahasa resmi negara tersebut berdasarkan pola dalam pernyataan kasus.

3#!/bin/bash
# Prints a message asking for the user's country name
echo -n "Enter the Country You Live In:"
# Reads keyboard input.
read var
# Prints a message showing the official language in the user's country ($var)
# based on the pattern in the case statement.
echo -n "The official language of $var is "

# Case statement - checks if the user's input ($var) matches the patterns.
case $var in
# Define patterns that print the user's country's official language.
 US)
  echo -n "English"
  ;;

 Canada)
  echo -n "English | French"
  ;;

 Algeria | Bahrain | Egypt| Jordan)
  echo -n "Arabic"
  ;;

 *)
  echo -n "unknown"
  ;;
esac

3. Terakhir, jalankan perintah berikut untuk mengeksekusi skrip bash_case_demo.sh.

bash bash_case_demo.sh

Di bawah ini, Anda dapat melihat bahwa bahasa resmi yang sesuai dicetak tergantung pada negara yang dimasukkan pengguna.

Jika negara yang dimasukkan tidak cocok dengan salah satu pola, pola default (*) akan digunakan, dan pesan yang tidak dikenal akan dicetak.

Kesimpulan

Dalam tutorial ini, Anda telah mengambil langkah pertama dalam mempelajari cara menggunakan pernyataan kondisional di Bash. Anda telah belajar menyederhanakan kode kompleks dengan pernyataan Bash if, pernyataan if-else, dan pernyataan kasus.

Anda sekarang cukup percaya diri untuk menggunakan pernyataan bersyarat untuk menulis skrip Bash dengan lebih efisien dan dengan lebih sedikit kesalahan.

Tapi jangan berhenti di sini! Ada lebih banyak hal yang dapat ditawarkan oleh pernyataan bersyarat di Bash. Mungkin mulai belajar tentang pernyataan Bash elif dan &&, OR dan || operator? Dengan sedikit latihan, Anda akan menulis skrip Bash seperti seorang profesional dalam waktu singkat!


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

  2. 2>&1 dan memahami idiom skrip shell lainnya

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

  1. Memahami Tc Qdisc Dan Iperf?

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

  3. Bash/sh pernyataan 'jika lain'

  1. Bash if elif else Pernyataan:Tutorial Komprehensif

  2. Pernyataan Bash:Sintaks dan Contoh

  3. Sintaks Pernyataan Bash case dan Contohnya