Sejauh yang saya tahu, menggunakan &
setelah perintah adalah untuk menjalankannya di latar belakang.
Contoh &
penggunaan:tar -czf file.tar.gz dirname &
Tapi bagaimana &&
? (lihat contoh ini: /server/215179/centos-100-disk-full-how-to-remove-log-files-history-etc#answer-215188 )
bash
shell
command-line
syntax
Kapten
sumber
sumber
false && echo "Will not be printed"
.Di shell, ketika Anda melihat
maksudnya adalah untuk mengeksekusi perintah yang mengikuti
&&
hanya jika perintah pertama berhasil. Ini idiomatis dari kerang Posix, dan tidak hanya ditemukan di Bash.Ini bermaksud untuk mencegah jalannya proses kedua jika yang pertama gagal.
Anda mungkin memperhatikan bahwa saya telah menggunakan kata "niat" - itu untuk alasan yang bagus. Tidak semua program memiliki perilaku yang sama, jadi agar ini berfungsi, Anda perlu memahami apa yang dianggap sebagai "kegagalan" program dan bagaimana cara menanganinya dengan membaca dokumentasi dan, jika perlu, kode sumber.
Shell Anda menganggap nilai pengembalian 0 untuk true, angka positif lainnya untuk false
Pengembalian program a sinyal saat keluar. Mereka harus mengembalikan 0 jika berhasil keluar, atau lebih besar dari nol jika tidak. Ini memungkinkan sejumlah komunikasi antara proses.
Ini
&&
disebut sebagaiAND_IF
dalam tata bahasa shell posix , yang merupakan bagian dariand_or
daftar perintah, yang juga termasuk||
yang merupakanOR_IF
dengan semantik serupa.Simbol tata bahasa, dikutip dari dokumentasi:
Dan Tata Bahasa (juga dikutip dari dokumentasi), yang menunjukkan bahwa sejumlah
AND_IF
s (&&
) dan / atauOR_IF
s (||
) dapat dirangkai (sepertiand_or
yang didefinisikan secara rekursif):Kedua operator memiliki prioritas yang sama dan dievaluasi dari kiri ke kanan (mereka asosiatif kiri). Seperti yang dikatakan para dokter:
Dalam kasus pertama, false adalah perintah yang keluar dengan status
1
yang berarti
echo foo
tidak berjalan (yaitu, shortcircuitingecho foo
). Kemudian perintahecho bar
dieksekusi.Dalam kasus kedua, true keluar dengan kode
0
dan karena
echo foo
itu tidak dieksekusi, makaecho bar
dieksekusi.sumber
Penggunaan yang cukup umum untuk '&&' adalah mengkompilasi perangkat lunak dengan autotool. Sebagai contoh:
Pada dasarnya jika konfigurasi berhasil, make dijalankan untuk dikompilasi, dan jika itu berhasil, make dijalankan sebagai root untuk menginstal program. Saya menggunakan ini ketika saya kebanyakan yakin bahwa hal-hal akan bekerja, dan itu memungkinkan saya untuk melakukan hal-hal penting lainnya seperti melihat stackoverflow dan tidak 'memantau' kemajuan.
Kadang-kadang saya benar-benar terbawa ...
Saya melakukan ini ketika misalnya membuat linux dari kotak awal.
sumber
set -o errexit
untuk Bash.&&
perintah string bersama. Perintah yang berurutan hanya dijalankan jika yang sebelumnya berhasil.Demikian pula,
||
akan memungkinkan perintah berturut-turut untuk mengeksekusi jika sebelumnya gagal.Lihat Pemrograman Bash Shell .
sumber
Lihat contohnya:
Shell akan mencoba membuat direktori
test
dan kemudian, hanya jika berhasil akan mencoba membuat file di dalamnya.Jadi, Anda dapat menginterupsi urutan langkah jika salah satunya gagal.
sumber
Ini untuk mengeksekusi pernyataan kedua jika pernyataan pertama berakhir dengan sukses. Seperti pernyataan if:
Yang pertama mencoba jika 1 == 1, jika itu benar ia memeriksa jika 2 == 2
sumber
&&
if
tes bekerja di bash. Saya tidak pernah menganggapnya sebagai rantai perintah perbandingan, memutuskan ketika salah satu dari mereka gagal. Jadi, Anda mendapatkan upvote saya :)||
, untukeei || leu || uie || echo prout3 || echo "never executed"
command_1 && command_2
: jalankan command_2 hanya ketika command_1 dijalankan dengan sukses.command_1 || command_2
: jalankan command_2 hanya ketika command_1 tidak berhasil dieksekusi.Rasanya mirip dengan bagaimana kondisi 'jika' dieksekusi dalam bahasa pemrograman arus utama, seperti, dalam
if (condition_1 && condition_2){...}
kondisi_2 akan dihilangkan jika kondisi_1 adalahfalse
dan dalamif (condition_1 || condition_2){...}
kondisi_2 akan dihilangkan jika kondisi_1 adalahtrue
. Lihat, itu trik yang sama yang Anda gunakan untuk coding :)sumber
Ketika program memeriksa apakah perintah, maka program membuat angka yang disebut kode keluar, jika kedua kondisi tersebut benar, kode keluar adalah nol (0), jika tidak, kode keluar adalah angka positif. hanya ketika menampilkan Equal jika kode keluar dihasilkan nol (0) yang berarti kedua kondisi tersebut benar.
sumber
if [[ ($first_command == "1") && ($two_command == "2") ]];then echo "Equal"; fi