Dalam tutorial dan bagaimana saya sering melihat perintah digabungkan. Contohnya,
sudo apt-get update && sudo apt-get install pyrenamer
Tampaknya ada empat konektor yang mungkin: &
, &&
, ||
dan ;
. Meskipun &
konektor jelas bagi saya (mengirim proses ke latar belakang dan meninggalkan terminal yang tersedia), tidak jelas apa perbedaannya &&
dan ;
. Dan saya tidak tahu ||
sampai komentar Kaya.
Pertanyaan berikut berhubungan dengan perbedaan antara dua konektor, tetapi kebanyakan dilakukan di komentar:
Jadi di sini ada sejumlah pertanyaan terkait:
- Apa perbedaan antara
;
dan &&
?
- Kapan Anda menggunakannya masing-masing? Akan menyenangkan untuk melihat beberapa kasus penggunaan: jika saya ingin menjalankan perintah dan kemudian setelah mematikan komputer saya, konektor mana yang harus saya pilih?
- Apa mereka keuntungan dan bahaya? Robie Basak menyebutkan dalam komentar untuk jawaban ini bahwa perintah seperti
cd /somewhere_else; rm -Rf *
dapat memiliki konsekuensi destruktif jika elemen pertama dalam rantai perintah gagal, misalnya.
- Jika relevan, dari mana mereka berasal?
Contekan:
A; B # Run A and then B, regardless of success of A
A && B # Run B if and only if A succeeded
A || B # Run B if and only if A failed
A & # Run A in background.
&&
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 diwakili secara ekivalen sebagai
if sudo apt-get update ; then
sudo apt-get install pyrenamer
fi
Menggunakan ;
akan menjalankan perintah terlepas apakah perintah pertama berhasil atau tidak.
menggunakan &&
mengeksekusi perintah 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 penginstalan hanya akan berjalan jika make
sukses.
Jadi untuk perintah tergantung yang harus Anda gunakan &&
Wring bash, atau perintah dengan menggunakan perintah independen ;
Jadi jika Anda ingin mematikan komputer bahkan pekerjaan pertama gagal digunakan ;
, tetapi jika ingin pada keberhasilan penuh pekerjaan pertama memulai penggunaan shutdown &&
a ; b
akan menjalankan b tanpa menghiraukan status keluar dari a. a && b
akan dijalankan b hanya jika berhasil.
Ini perlu dan cukup untuk menjawab 3 pertanyaan pertama. Secara khusus, 2 terlalu luas, dan tidak dapat diberikan jawaban pasti "satu" - 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. Itu menyiratkan bahwa Anda akan menulis &&
kapan b
memiliki efek yang tidak diinginkan jika a
tidak berhasil. Tidak perlu ada aturan atau penjelasan lebih lanjut, IMHO.