Mengenai di luar topik, terakhir kali saya periksa, bash masih bahasa pemrograman, tetapi saya salah sebelumnya dan itu bisa berupa permen buah kering.
Steve K
Ya, dan jika Anda mengajukan pertanyaan tentang perilaku tertentu atau cara yang benar untuk melakukan hal tertentu, itu pasti sesuai topiknya. Ini termasuk dalam kategori abu-abu dari "pertanyaan tentang sintaksis bahasa" yang tidak sejelas pertanyaan "pemrograman" sejauh yang saya ketahui.
Etan Reisner
4
bash dalam beberapa hal kering, dan dalam beberapa hal manis. Pada akhirnya itu cukup menyenangkan dan mudah dicerna. Bagaimanapun, itu tidak dapat dengan mudah dicuri dari bayi.
code_monk
Jawaban:
139
The &&operator adalah boolean operator AND: jika sisi kiri mengembalikan status non-nol keluar, operator pengembalian yang status dan tidak mengevaluasi sisi kanan (pendek-sirkuit), jika tidak mengevaluasi sisi kanan dan mengembalikan status keluar nya . Ini biasanya digunakan untuk memastikan bahwa command2hanya dijalankan jika command1berhasil dijalankan.
The ;Token hanya memisahkan perintah, sehingga akan menjalankan perintah kedua terlepas dari apakah atau tidak yang pertama berhasil.
apakah ampersand ganda &&berbeda dari satu ampersand &di bash?
Charlie Parker
16
@CharlieParker &menyebabkan perintah dijalankan di latar belakang, jadi ya. "Jalankan ini di latar belakang" sangat berbeda dengan "jalankan perintah berikut ini hanya jika yang lain ini berhasil."
cdhowie
Perintah2 hanya akan menjalankan perintah1 mengembalikan status keluar nol , artinya selesai dengan sukses ..
Nik
Apakah ;masih menunggu perintah pertama selesai?
rfii
@rfii Ya, tetapi ia menjalankan perintah kedua tanpa memperhatikan apakah perintah pertama berhasil. a;bartinya "lari alalu lari b." a&&bartinya "lari a, lalu jalankan bhanya jika aberhasil".
cdhowie
33
perintah1 && perintah2
command1 && command2dijalankan command2jika (dan hanya jika) command1eksekusi berakhir dengan sukses. Dalam jargon Unix, itu berarti kode keluar / kode pengembalian sama dengan nol.
perintah1; perintah2
command1; command2dieksekusi command2setelah dieksekusi command1, secara berurutan. Tidak peduli apakah perintah itu berhasil atau tidak.
Yang pertama adalah logika sederhana yang ANDmenggunakan evaluasi hubung singkat, yang terakhir hanya membatasi dua perintah.
Apa yang terjadi secara nyata adalah ketika program pertama mengembalikan kode keluar bukan nol, keseluruhan ANDdievaluasi FALSEdan perintah kedua tidak akan dijalankan. Kemudian hanya mengeksekusi keduanya secara berurutan.
Jawaban:
The
&&
operator adalah boolean operator AND: jika sisi kiri mengembalikan status non-nol keluar, operator pengembalian yang status dan tidak mengevaluasi sisi kanan (pendek-sirkuit), jika tidak mengevaluasi sisi kanan dan mengembalikan status keluar nya . Ini biasanya digunakan untuk memastikan bahwacommand2
hanya dijalankan jikacommand1
berhasil dijalankan.The
;
Token hanya memisahkan perintah, sehingga akan menjalankan perintah kedua terlepas dari apakah atau tidak yang pertama berhasil.sumber
&&
berbeda dari satu ampersand&
di bash?&
menyebabkan perintah dijalankan di latar belakang, jadi ya. "Jalankan ini di latar belakang" sangat berbeda dengan "jalankan perintah berikut ini hanya jika yang lain ini berhasil.";
masih menunggu perintah pertama selesai?a;b
artinya "laria
lalu larib
."a&&b
artinya "laria
, lalu jalankanb
hanya jikaa
berhasil".perintah1 && perintah2
command1 && command2
dijalankancommand2
jika (dan hanya jika)command1
eksekusi berakhir dengan sukses. Dalam jargon Unix, itu berarti kode keluar / kode pengembalian sama dengan nol.perintah1; perintah2
command1; command2
dieksekusicommand2
setelah dieksekusicommand1
, secara berurutan. Tidak peduli apakah perintah itu berhasil atau tidak.sumber
Yang pertama adalah logika sederhana yang
AND
menggunakan evaluasi hubung singkat, yang terakhir hanya membatasi dua perintah.Apa yang terjadi secara nyata adalah ketika program pertama mengembalikan kode keluar bukan nol, keseluruhan
AND
dievaluasiFALSE
dan perintah kedua tidak akan dijalankan. Kemudian hanya mengeksekusi keduanya secara berurutan.sumber