Apa arti ' &&
', ' \
' dan ' -
' di akhir perintah bash?
Secara khusus, saya menemukan kombinasi garis berikut yang seharusnya menambahkan kunci publik ke manajer paket aptitude Ubuntu, untuk apa karakter yang digunakan di sini?
gpg --keyserver keyserver.ubuntu.com --recv 26C2E075 && \ gpg --export --armor 26C2E075 | sudo apt-key add - && \ sudo apt-get pembaruan
Jawaban:
"&&" digunakan untuk mengaitkan perintah bersama, sehingga perintah berikutnya dijalankan jika dan hanya jika perintah sebelumnya keluar tanpa kesalahan (atau, lebih tepatnya, keluar dengan kode pengembalian 0).
"\" dengan sendirinya di akhir baris adalah cara menggabungkan baris bersama. Jadi dua baris berikut:
diproses persis sama seperti jika baris ditulis sebagai satu baris:
"-" adalah argumen baris perintah tanpa fungsi bash khusus. Cara penanganannya bergantung pada perintah yang sedang dijalankan (dalam hal ini apt-key ). Bergantung pada konteks, ini biasanya digunakan untuk menunjukkan " membaca data dari stdin daripada dari file ", atau " memproses sisa baris sebagai data daripada sebagai argumen baris perintah ".
sumber
sumber
&& Apakah logika AND:
&& adalah cara untuk mengekspresikan Logical AND , yang berarti seluruh ekspresi adalah Benar hanya jika kedua sisi itu benar. Dalam logika, dikatakan bahwa seluruh pernyataan (P&Q) hanya benar ketika P dan Q benar.
Sebagai akibatnya, komputer umumnya memperlakukan P&Q sebagai evaluasi arus pendek . Jadi karena seluruh pernyataan hanya akan Benar jika P dan Q benar, maka jika P salah, pernyataan Q tidak dievaluasi . Pada dasarnya komputer itu malas (efisien), dan tidak repot mengevaluasi Q jika mereka juga tidak. Ini juga Benar logis ATAU, lihat tautan sebelumnya.
Tiga Konteks && di Bash:
1) Menggunakan Evaluasi Sirkuit Pendek dengan status keluar dari Perintah:
Setiap perintah memiliki status keluar. Jika suatu perintah memiliki kesalahan, ia memiliki status keluar yang bukan nol. Jadi jika status keluar adalah bukan nol dan && digunakan untuk mengaitkan perintah bersama menjadi pernyataan, perintah selanjutnya tidak akan dievaluasi (dieksekusi) jika yang sebelumnya tidak memiliki status keluar 0 (Benar). Ini karena evaluasi hubung singkat. Jadi, jika Anda memiliki:
Q tidak akan dieksekusi jika P tidak benar (jika P keluar dengan status apa pun kecuali 0, itu tidak benar). Sama seperti:
make tidak akan dieksekusi jika configure memiliki kesalahan, itu tidak benar. Jadi pada dasarnya, maka akhirnya menjadi cara menulis jika pernyataan itu:
Perlu diingat bahwa dalam sebagian besar konteks 0 adalah salah, tetapi tidak ketika datang ke status keluar.
2) && Dapat Digunakan dalam perintah uji Bash bawaan [[]]:
&& Dapat juga digunakan di dalam perintah uji bawaan di bash [[]] untuk menggabungkan ekspresi dengan cara yang sama seperti menggabungkan perintah. Seluruh operasi pengujian hanya akan benar jika kedua operan (sisi) && benar, misalnya:
akan menjadi cara untuk mengatakan jika $ a adalah bilangan bulat antara 2 dan 5 (tidak termasuk 2 dan 5).
3) Evaluasi Aritmatika:
Terakhir, && dapat digunakan dalam evaluasi aritmatika sebagai Logis DAN. Jika keduanya (logis DAN) dari angka-angka di bawah ini adalah bukan nol, angka itu mengembalikan 0, kalau tidak 1 akan dikembalikan:
sumber
if [./configure]
contoh, Anda harus menghapus tanda kurung. Yang benar adalahif ./configure; then make...
Saya pikir Anda akan lebih baik dengan penjelasan tentang makna "nyata", implikasi adalah hal lain :)
\
adalah " karakter melarikan diri ", dan itu adalah salah satu dari tiga mekanisme penawaran yang tersedia di bash: Ini berarti bahwa jika Anda meletakkan karakter pelarian ("\") di akhir baris, Anda sebenarnya melarikan diri karakter baris baru yang langsung mengikutinya (karakter RETURN) sehingga memiliki efek "lanjutkan garis" yang lain sudah menjelaskan dalam jawaban mereka2 sen saya
sumber