Dalam tutorial dan caranya, saya sering melihat perintah digabungkan. Misalnya,
sudo apt-get update && sudo apt-get install pyrenamer
Tampaknya ada empat konektor mungkin: &
, &&
, ||
dan ;
. Meskipun &
konektornya jelas bagi saya (mengirimkan proses ke latar belakang dan membiarkan terminal tersedia), tidak jelas apa perbedaan antara &&
dan ;
. Dan saya tidak tahu ||
sampai komentar Kaya.
Pertanyaan-pertanyaan berikut berhubungan dengan perbedaan antara kedua konektor, tetapi sebagian besar melakukannya di komentar:
Jadi, inilah sejumlah pertanyaan terkait:
- Apa perbedaan antara
;
dan&&
? - Kapan Anda harus menggunakannya masing - masing? Akan menyenangkan untuk melihat beberapa use case: jika saya ingin menjalankan perintah dan kemudian setelah itu mematikan komputer saya, konektor mana yang harus saya pilih?
- Apa keuntungan dan bahayanya ? Robie Basak menyebutkan dalam komentar untuk jawaban ini bahwa perintah seperti
cd /somewhere_else; rm -Rf *
dapat memiliki konsekuensi yang merusak jika elemen pertama dalam rantai perintah gagal, misalnya. - Jika relevan, dari mana asalnya?
command-line
bash
jangan
sumber
sumber
||
sama dengan&&
kecuali bahwa ia hanya menjalankan perintah kedua jika yang pertama keluar dengan status bukan-nol (tidak berhasil).set -e
akan menghentikan skrip pada kegagalan seolah-olah semua perintah terhubung dengan&&
.Jawaban:
Contekan:
sumber
A & B &
,: Jalankan A di latar belakang, kemudian jalankan B di latar belakang (terlepas dari keberhasilan) dan kembalikan kontrol ke shell. Ini sering bekerja hampir sama dengan menjalankan kedua proses pada saat yang sama.(A && B) &
.&&
hanya menjalankan perintah kedua jika yang pertama keluar dengan status 0 (berhasil).;
menjalankan kedua perintah, bahkan jika yang pertama keluar dengan status bukan nol.Contoh Anda dengan
&&
dapat diparafrasekan sebagaisumber
;
jika perintah kedua tidak membutuhkan yang sebelumnya untuk berhasil.Menggunakan
;
akan mengeksekusi perintah terlepas dari apakah perintah pertama berhasil atau tidak.menggunakan
&&
jalankan perintah ke-2 hanya ketika perintah pertama berhasil dijalankan (status 0).Keduanya digunakan pada perspektif yang berbeda. Seperti untuk proses yang lebih lama, katakanlah untuk instalasi Anda perlu mengkompilasi dan menginstalnya. kamu harus
make && make install
. Jadi instal hanya akan berjalan jikamake
berhasil.Jadi untuk perintah dependen yang harus Anda gunakan
&&
Peras bash, atau perintah dengan perintah independen digunakan
;
Jadi, jika Anda ingin mematikan komputer meskipun pekerjaan pertama gagal digunakan
;
, tetapi jika ingin berhasil sepenuhnya pekerjaan pertama memulai penggunaan shutdown&&
sumber
a ; b
akan berjalan b terlepas dari status keluar dari a.a && b
akan berjalan b hanya jika berhasil.Ini perlu dan cukup untuk menjawab 3 pertanyaan pertama. Secara khusus, 2 terlalu luas, dan tidak dapat diberikan "satu" jawaban definitif - taruhan terbaik Anda adalah memutuskan berdasarkan kasus per kasus.
Adapun pertanyaan ke-4: Mereka sintaks Bash .
Tidak ada bahaya intrinsik dalam menggunakan keduanya. Sekali lagi, definisi di atas sudah cukup. Ini menyiratkan bahwa Anda akan menulis
&&
kapanb
memiliki efek yang tidak diinginkan jikaa
tidak berhasil. Tidak perlu aturan atau penjelasan lebih lanjut, IMHO.sumber
Aturan praktis yang sangat bagus. Saya akan menambahkan bahwa dalam beberapa kasus, menggunakan perintah ini dalam subkulit masuk akal ketika kita ingin menganggapnya sebagai satu unit atau kita tidak ingin memasangkan beberapa hasil operasi dengan shell saat ini.
Contoh:
-menghasil output dari dua perintah:
-masuk ke direktori dan melakukan perintah dari sana sementara tidak mengubah direktori shell saat ini:
sumber