BASH : operator OR ( || ) dan and ( && )

cd /tmp || exit 2

Apakah makna dari double pipe “||” ini ? Tanda || pada baris perintah “shell atau perl” mengacu pada: OR. jadi skrip kita mengandung perintah “ lakukan perintah pertama || \ OR perintah kedua ”

Jika perintah pertama berhasil, perintah kedua tidak akan dieksekusi, itu berarti perintah kedua akan di eksekusi jika exit status perintah pertama tidak sama dengan 0. operator ini adalah kebalikan dari operator “&&”, dimana perintah kedua akan dieksekusi jika dan hanya jika exit status perintah pertama sama dengan 0

contoh :

$ ls file_tidak_ada.txt || echo TIDAK_ADA
 ls: cannot access this_tidak_ada.txt: No such file or directory
 TIDAK_ADA
$ ls file_ada.txt && echo ADA
 file_ada.txt
 ADA


jadi apa gunanya?

misal kita ingin membuat sebuah perintah yang akan dieksekusi secara berulang sebanyak n kali sampai perintah itu berhasil dijalankan .

contoh kita akan menguji dengan 3 kali percobaan, apakah koneksi internet tersambung, dengan waktu jeda 15 detik. menggunakan wget (pada bash):

#!/bin/bash

for i in {1..3} 
do 
   wget -q --tries=10 --timeout=20 --spider http://www.blankonlinux.or.id && break || sleep 15

done

Happy hacking 🙂

Iklan