Jika saya ingin menjalankan dua perintah terpisah pada satu baris, saya bisa melakukan ini:
cd /home; ls -al
atau ini:
cd /home && ls -al
Dan saya mendapatkan hasil yang sama. Namun, apa yang terjadi di latar belakang dengan kedua metode ini? Apa perbedaan fungsional di antara mereka?
;
adalah benar-benar berbahaya (setidaknya dengan perintah rm), misalnyacd /some/dir; rm -fr ./*
. Jadi dengan operasi yang merusak Anda harus yakin bahwa Anda berada di tempat yang tepat sebelum menjalankan rm. Perintah yang benar adalahcd /some/dir && rm -fr ./*
jika a mengembalikan nol kode keluar, maka b dieksekusi.
jika suatu mengembalikan kode non-zero exit, maka b dijalankan.
a dieksekusi dan kemudian b dieksekusi.
sumber
Berjalan
ls
di direktori saat ini karenacd /fakedir
akan gagal dan shell akan mengabaikan status keluar yang bukan nol.Karena
&&
operator hanya akan melanjutkan jika perintah sebelumnya keluar secara normal (status nol), tidak adals
operasi yang akan dilakukan.Ada operator lain, seperti
&
yang akan melatarbelakangi suatu proses. Meskipun sering ditempatkan di akhir perintah, itu bisa diletakkan di tengah rantai.sumber
Anda juga dapat bergabung bersama mereka seperti
if..then..else
logika perintah chaining.contoh:
sumber