GNU/Linux >> Belajar Linux >  >> Linux

Pernyataan Bash if..else

Tutorial ini akan memandu Anda melalui dasar-dasar Bash if Pernyataan dan tunjukkan cara menggunakannya di skrip shell Anda.

Pengambilan keputusan adalah salah satu konsep paling mendasar dari pemrograman komputer. Seperti dalam bahasa pemrograman lainnya, if , if..else , if..elif..else , dan if . bersarang pernyataan di Bash digunakan untuk mengeksekusi kode berdasarkan kondisi tertentu.

if Pernyataan #

Bash if conditional dapat memiliki bentuk yang berbeda. if yang paling dasar pernyataan mengambil bentuk berikut:

if TEST-COMMAND
then
  STATEMENTS
fi

if pernyataan dimulai dengan if kata kunci diikuti oleh ekspresi kondisional dan then kata kunci. Pernyataan diakhiri dengan fi kata kunci.

Jika TEST-COMMAND mengevaluasi ke True , STATEMENTS akan dieksekusi. Jika TEST-COMMAND mengembalikan False , tidak ada yang terjadi; STATEMENTS diabaikan.

Secara umum, merupakan praktik yang baik untuk selalu membuat indentasi kode Anda dan memisahkan blok kode dengan baris kosong. Kebanyakan orang memilih untuk menggunakan lekukan 4-spasi atau 2-spasi. Lekukan dan baris kosong membuat kode Anda lebih mudah dibaca dan terorganisir.

Mari kita lihat contoh skrip berikut yang memeriksa apakah angka yang diberikan lebih besar dari 10:

#!/bin/bash

echo -n "Enter a number: "
read VAR

if [[ $VAR -gt 10 ]]
then
  echo "The variable is greater than 10."
fi

Simpan kode dalam file dan jalankan dari baris perintah:

bash test.sh

Script akan meminta Anda untuk memasukkan nomor. Jika, misalnya, Anda memasukkan 15, test perintah akan mengevaluasi ke true karena 15 lebih besar dari 10, dan echo perintah di dalam then klausa akan dieksekusi.

The variable is greater than 10.

if..else Pernyataan #

Bash if..else pernyataan mengambil bentuk berikut:

if TEST-COMMAND
then
  STATEMENTS1
else
  STATEMENTS2
fi

Jika TEST-COMMAND mengevaluasi ke True , STATEMENTS1 akan dieksekusi. Jika tidak, jika TEST-COMMAND mengembalikan False , STATEMENTS2 akan dieksekusi. Anda hanya dapat memiliki satu else klausa dalam pernyataan.

Mari tambahkan else klausa ke skrip contoh sebelumnya:

#!/bin/bash

echo -n "Enter a number: "
read VAR

if [[ $VAR -gt 10 ]]
then
  echo "The variable is greater than 10."
else
  echo "The variable is equal or less than 10."
fi

Jika Anda menjalankan kode dan memasukkan angka, skrip akan mencetak pesan yang berbeda berdasarkan apakah angkanya lebih besar atau lebih kecil/sama dengan 10.

if..elif..else Pernyataan #

Bash if..elif..else pernyataan mengambil bentuk berikut:

if TEST-COMMAND1
then
  STATEMENTS1
elif TEST-COMMAND2
then
  STATEMENTS2
else
  STATEMENTS3
fi

Jika TEST-COMMAND1 mengevaluasi ke True , STATEMENTS1 akan dieksekusi. Jika TEST-COMMAND2 mengevaluasi ke True , STATEMENTS2 akan dieksekusi. Jika tidak ada perintah pengujian yang mengevaluasi ke True , STATEMENTS2 dijalankan.

Anda dapat memiliki satu atau lebih elif klausa dalam pernyataan. else klausa adalah opsional.

Kondisi dievaluasi secara berurutan. Setelah kondisi mengembalikan True , kondisi yang tersisa tidak dilakukan, dan kontrol program berpindah ke akhir if pernyataan.

Mari tambahkan elif klausa ke skrip sebelumnya:

#!/bin/bash

echo -n "Enter a number: "
read VAR

if [[ $VAR -gt 10 ]]
then
  echo "The variable is greater than 10."
elif [[ $VAR -eq 10 ]]
then
  echo "The variable is equal to 10."
else
  echo "The variable is less than 10."
fi

Bersarang if Pernyataan #

Bash memungkinkan Anda untuk membuat sarang if pernyataan dalam if pernyataan. Anda dapat menempatkan beberapa if pernyataan di dalam if another yang lain pernyataan.

Skrip berikut akan meminta Anda untuk memasukkan tiga angka dan mencetak angka terbesar di antara ketiga angka tersebut.

#!/bin/bash

echo -n "Enter the first number: "
read VAR1
echo -n "Enter the second number: "
read VAR2
echo -n "Enter the third number: "
read VAR3

if [[ $VAR1 -ge $VAR2 ]]
then
  if [[ $VAR1 -ge $VAR3 ]]
  then
    echo "$VAR1 is the largest number."
  else
    echo "$VAR3 is the largest number."
  fi
else
  if [[ $VAR2 -ge $VAR3 ]]
  then
    echo "$VAR2 is the largest number."
  else
    echo "$VAR3 is the largest number."
  fi
fi

Berikut adalah bagaimana output akan terlihat seperti:

Enter the first number: 4
Enter the second number: 7
Enter the third number: 2
7 is the largest number.
Secara umum, lebih efisien menggunakan case pernyataan alih-alih if . bersarang pernyataan.

Beberapa Kondisi #

Logika OR dan AND operator memungkinkan Anda untuk menggunakan beberapa kondisi di if pernyataan.

Berikut adalah versi lain dari skrip untuk mencetak angka terbesar di antara ketiga angka tersebut. Dalam versi ini, alih-alih if . bersarang pernyataan, kami menggunakan logika AND (&& ) operator.

#!/bin/bash

echo -n "Enter the first number: "
read VAR1
echo -n "Enter the second number: "
read VAR2
echo -n "Enter the third number: "
read VAR3

if [[ $VAR1 -ge $VAR2 ]] && [[ $VAR1 -ge $VAR3 ]]
then
  echo "$VAR1 is the largest number."
elif [[ $VAR2 -ge $VAR1 ]] && [[ $VAR2 -ge $VAR3 ]]
then
  echo "$VAR2 is the largest number."
else
  echo "$VAR3 is the largest number."
fi

Operator Uji #

Di Bash, test perintah mengambil salah satu bentuk sintaks berikut:

test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]

Untuk membuat skrip portabel, lebih suka menggunakan [ test pengujian lama] perintah, yang tersedia di semua shell POSIX. Versi baru dari test perintah [[ (tanda kurung ganda) didukung di sebagian besar sistem modern yang menggunakan Bash, Zsh, dan Ksh sebagai shell default.

Untuk meniadakan ekspresi pengujian, gunakan logika NOT (! ) operator. Saat membandingkan string, selalu gunakan tanda kutip tunggal atau ganda untuk menghindari masalah pemisahan kata dan globbing.

Di bawah ini adalah beberapa operator yang paling umum digunakan:

  • -n VAR - Benar jika panjang VAR lebih besar dari nol.
  • -z VAR - Benar jika VAR kosong.
  • STRING1 = STRING2 - Benar jika STRING1 dan STRING2 setara.
  • STRING1 != STRING2 - Benar jika STRING1 dan STRING2 tidak sama.
  • INTEGER1 -eq INTEGER2 - Benar jika INTEGER1 dan INTEGER2 setara.
  • INTEGER1 -gt INTEGER2 - Benar jika INTEGER1 lebih besar dari INTEGER2 .
  • INTEGER1 -lt INTEGER2 - Benar jika INTEGER1 kurang dari INTEGER2 .
  • INTEGER1 -ge INTEGER2 - Benar jika INTEGER1 sama atau lebih besar dari INTEGER2.
  • INTEGER1 -le INTEGER2 - Benar jika INTEGER1 sama atau lebih kecil dari INTEGER2 .
  • -h FILE - Benar jika FILE ada dan merupakan tautan simbolis.
  • -r FILE - Benar jika FILE ada dan dapat dibaca.
  • -w FILE - Benar jika FILE ada dan dapat ditulis.
  • -x FILE - Benar jika FILE ada dan dapat dieksekusi.
  • -d FILE - Benar jika FILE ada dan merupakan direktori.
  • -e FILE - Benar jika FILE ada dan merupakan file, apa pun jenisnya (node, direktori, soket, dll.).
  • -f FILE - Benar jika FILE adadan adalah file biasa (bukan direktori atau perangkat).

Kesimpulan #

if , if..else dan if..elif..else pernyataan memungkinkan Anda untuk mengontrol aliran eksekusi skrip Bash dengan mengevaluasi kondisi yang diberikan.

Jika Anda memiliki pertanyaan atau masukan, jangan ragu untuk memberikan komentar.


Linux
  1. Pernyataan Bash If-Else Dengan Contoh

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

  3. 5 Contoh Pernyataan Kasus Bash

  1. Cara Menggunakan if else Conditionals Statement di Bash Script

  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. Apakah ada pernyataan goto di bash?