Saya biasanya menggunakan ;
untuk menggabungkan lebih dari satu perintah dalam satu baris, tetapi beberapa orang lebih suka &&
. Apakah ada bedanya? Misalnya, cd ~; cd -
dan cd ~ && cd -
sepertinya membuat hal yang sama. Versi apa yang lebih portabel, misalnya akan didukung oleh bash-subset seperti shell Android atau lebih?
bash
shell
syntax
multiplatform
psihodelia.dll
sumber
sumber
;
satu atau yang itu&&
? Atau apakah yang Anda maksud keduanya?&&
.Saya menggunakan
&&
karena lama sekali di komputer terdekat:root# pwd / root# cd /tnp/test; rm -rf * cd: /tnp/test: No such file or directory ... ... and after a while ... ... ^C
tapi tidak membantu ...;)
cd /tnp/test && rm -rf *
aman... ;)sumber
rm -rf /tnp/test
rm /tnp/test/ -rf
untuk mencegah masuk yang mematikan salah klikDalam
cmd1 && cmd2
,cmd2
hanya dijalankan jikacmd1
berhasil (mengembalikan 0).Dalam
cmd1 ; cmd2
,cmd2
dieksekusi dalam kasus apa pun.Kedua konstruksi tersebut merupakan bagian dari shell yang sesuai dengan POSIX.
sumber
&&
berarti menjalankan perintah selanjutnya jika sebelumnya keluar dengan status 0. Untuk sebaliknya, gunakan||
ie untuk dieksekusi jika perintah sebelumnya keluar dengan status tidak sama dengan 0;
selalu dieksekusi.Sangat berguna ketika Anda perlu mengambil tindakan tertentu tergantung pada apakah perintah sebelumnya selesai OK atau tidak.
sumber
Perintah yang dipisahkan oleh
;
dijalankan secara berurutan terlepas dari status penyelesaiannya.Dengan
&&
, perintah kedua dijalankan hanya jika yang pertama berhasil diselesaikan (mengembalikan status keluar 0).Ini tercakup dalam halaman manual bash di bawah
Lists
. Saya mengharapkan shell mirip Unix untuk mendukung kedua operator ini, tetapi saya tidak tahu secara spesifik tentang shell Android.sumber
&&
memungkinkan untuk eksekusi bersyarat sementara;
selalu perintah kedua dijalankan.Misalnya
command1 && command2
,command2
hanya akan dieksekusi ketikacommand1
telah diakhiri denganexit 0
, pensinyalan semua berjalan dengan baik, sedangkan padacommand1 ; command2
perintah kedua akan selalu dijalankan tidak peduli apa pun hasilnyacommand1
.sumber
&& logis DAN dalam bash. Bash memiliki evaluasi sirkuit pendek AND logis. Idiom ini adalah cara yang lebih sederhana untuk mengungkapkan hal berikut:
cmd1;rc=$? if [ $rc -eq 0 ]; then cmd2 fi
Sedangkan ; versi hanyalah:
sumber