GNU/Linux >> Belajar Linux >  >> Linux

6 Contoh Ekspresi Kondisional Bash ( -e, -eq, -z, !=, [, [[ ..)

Ekspresi bash adalah kombinasi dari operator, fitur, atau nilai yang digunakan untuk membentuk pernyataan kondisional bash. Ekspresi bersyarat dapat berupa ekspresi biner atau unary yang melibatkan numerik, string, atau perintah apa pun yang status pengembaliannya nol saat berhasil.


Ada beberapa ekspresi kondisional yang dapat digunakan untuk menguji file. Berikut adalah beberapa ekspresi kondisional yang berguna.

  • [ -e filepath ] Mengembalikan nilai true jika file ada.
  • [ -x filepath ] Mengembalikan nilai true jika file ada dan dapat dieksekusi.
  • [ -S filepath ] Mengembalikan nilai true jika file ada dan merupakan file soket.
  • [ expr1 -a expr2 ] Mengembalikan nilai true jika kedua ekspresi benar.
  • [ expr1 -o expr2 ] Mengembalikan nilai true jika salah satu dari ekspresi1 atau 2 benar.

Untuk ekspresi bersyarat lainnya untuk memeriksa file, string, dan numerik, silakan merujuk ke halaman manual bash.

Contoh Bash 1. Periksa Keberadaan File

Cuplikan kode skrip shell Bash berikut mendapatkan nama file dengan jalur absolutnya, dan memeriksa apakah file tersebut ada atau tidak dan ia memberikan informasi yang sesuai.

$ cat exist.sh
#! /bin/bash
file=$1
if [ -e $file ]
then
	echo -e "File $file exists"
else
	echo -e "File $file doesnt exists"
fi

$ ./exist.sh /usr/bin/boot.ini
File /usr/bin/boot.ini exists

Lihat artikel kami sebelumnya untuk memahami berbagai jenis pernyataan bash if.

Contoh Bash 2. Bandingkan Angka

Skrip di bawah ini membaca dua bilangan bulat dari pengguna, dan memeriksa apakah kedua bilangan tersebut sama atau lebih besar atau lebih kecil dari satu sama lain.

$ cat numbers.sh
#!/bin/bash
echo "Please enter first number"
read first
echo "Please enter second number"
read second

if [ $first -eq 0 ] && [ $second -eq 0 ]
then
	echo "Num1 and Num2 are zero"
elif [ $first -eq $second ]
then
	echo "Both Values are equal"
elif [ $first -gt $second ]
then
	echo "$first is greater than $second"
else
	echo "$first is lesser than $second"
fi

$ ./numbers.sh
Please enter first number
1
Please enter second number
1
Both Values are equal

$ ./numbers.sh
Please enter first number
3
Please enter second number
12
3 is lesser than 12

Jika Anda baru mengenal skrip bash, lihat tutorial Pengenalan Bash kami.

Contoh Bash 3. Kalkulator Aritmatika Dasar

Contoh ini membaca input, yang merupakan jenis operasi aritmatika yang ingin dilakukan pada variabel bash (inp1 dan inp2). Operasi aritmatika dapat berupa penjumlahan, pengurangan atau perkalian..

$ cat calculator.sh
#!/bin/bash
inp1=12
inp2=11
echo "1. Addition"
echo "2. Subtraction"
echo "3. Multiplication"
echo -n "Please choose a word [1,2 or 3]? "
read oper

if [ $oper -eq 1 ]
then
	echo "Addition Result " $(($inp1 + $inp2))
else
	if [ $oper -eq 2 ]
	then
		echo "Subtraction Result " $(($inp1 - $inp2))
	else
		if [ $oper -eq 3 ]
		then
			echo "Multiplication Result " $(($inp1 * $inp2))
		else
			echo "Invalid input"
		fi
	fi
fi

$ ./calculator.sh
1. Addition
2. Subtraction
3. Multiplication
Please choose a word [1,2 or 3]? 4
Invalid input

Mengetahui cara menggunakan parameter khusus bash ( $*, $@, $#, $$, $!, $?, $-, $_ ) akan memudahkan kehidupan skrip Anda.

Contoh Bash 4. Baca dan Ping alamat IP

Skrip berikut digunakan untuk membaca alamat IP dan memeriksa apakah alamat IP dapat dijangkau, dan mencetak pesan yang sesuai.

$ cat ipaddr.sh
#!/bin/bash
echo "Enter the Ipaddress"
read ip

if [ ! -z $ip ]
then
	ping -c 1 $ip
	if [ $? -eq 0 ] ; then
		echo "Machine is giving ping response"
	else
		echo "Machine is not pinging"
	fi
else
	echo "IP Address is empty"
fi

$ ./ipaddr.sh
Enter the Ipaddress
10.176.191.106

Pinging 10.176.191.106 with 32 bytes of data:

Reply from 10.176.191.106: bytes=32 time<1ms TTL=128

Ping statistics for 10.176.191.106:
    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms
Machine is giving ping response

Dalam contoh ini, -z mengembalikan nilai true jika ipaddress panjangnya nol, Ketika kondisi didahului oleh ! (meniadakan) operator, jika ekspresi salah, ia masuk ke bagian if dan dieksekusi. Jadi ketika alamat IP tidak nol, ia masuk dan memeriksa apakah alamat ip dapat dijangkau.

Contoh Bash 5. Skrip Pemasang

Skrip penginstal dari sebagian besar paket tidak akan memungkinkan untuk menjalankannya sebagai pengguna root. Script memeriksa pengguna yang mengeksekusi dan melempar kesalahan.

Skrip berikut, memungkinkan Anda untuk menjalankan skrip penginstal Oracle hanya jika pengguna yang menjalankannya bukan root.

$ cat preinstaller.sh
#!/bin/bash
if [ `whoami` != 'root' ]; then
	echo "Executing the installer script"
	./home/oracle/databases/runInstaller.sh
else
	echo "Root is not allowed to execute the installer script"
fi

Executing the script as a root user,
# ./preinstaller.sh
Root is not allowed to execute the installer script

Dalam contoh ini output dari perintah whoami dibandingkan dengan kata “root”. Untuk perbandingan string ==, !=, < dan harus digunakan dan untuk perbandingan numerik eq, ne,lt dan gt harus digunakan.

Contoh Bash 6. Tanda kurung yang disempurnakan

Dalam semua contoh di atas, kami hanya menggunakan tanda kurung tunggal untuk mengapit ekspresi bersyarat, tetapi bash mengizinkan tanda kurung ganda yang berfungsi sebagai versi sintaks tanda kurung tunggal yang disempurnakan.

$ cat enhanced.sh
#!/bin/bash
echo "Enter the string"
read str
if [[ $str == *condition* ]]
then
	echo "String "$str has the word \"condition\"
fi

$ ./enhanced.sh
Enter the string
conditionalstatement
String conditionalstatement has the word "condition"
  • [ adalah sinonim untuk perintah pengujian. Bahkan jika itu dibangun di dalam shell, itu menciptakan proses baru.
  • [[ adalah versi baru yang ditingkatkan, yang merupakan kata kunci, bukan program.
  • [[ dipahami oleh Korn dan Bash.
  • Pada contoh di atas, jika variabel $str berisi frasa “kondisi” di mana saja, kondisinya benar.
  • Ini adalah fitur globbing shell, yang hanya akan didukung bila Anda menggunakan [[ (tanda kurung ganda) dan oleh karena itu banyak argumen yang tidak perlu dikutip.

Linux
  1. Panduan Bash For Loop dan Contohnya

  2. Bash + Verifikasi Nama Dengan Ekspresi Reguler?

  3. Bash Array Dengan Contoh

  1. Pernyataan Bash If-Else Dengan Contoh

  2. Contoh Bash For Loop dan While Loop

  3. 5 Contoh Pernyataan Kasus Bash

  1. Cara Menulis Skrip Bash dengan Contoh

  2. Contoh Bash untuk loop

  3. '&&' vs. '&' dengan perintah 'test' di Bash