Dalam bash, saya dapat membuat kondisi pengujian menggunakan & amp; & amp; dan / atau || daripada blok if / elif / else.
Ketika berlaku, saya menggunakan cenderung menggunakan & amp; & amp; dan / atau || daripada membangun blok if. Apakah ada keuntungan dunia nyata untuk satu konstruksi di atas yang lain?
Perhatikan contoh-contoh berikut:
1)
[[ -f /shared_disk/backups/daily.tar.bz2 ]] && echo "the coast is clear" || echo "run the dump"
2)
if [[ -f /shared_disk/backups/daily.tar.bz2 ]]; then
echo "the coast is clear"
else
echo "run the dump"
fi
linux
bash
bash-scripting
derek_jenkins
sumber
sumber
Jawaban:
Dua bentuk yang Anda sajikan tidak persis sama.
Dalam bentuk:
A && B || C
,C
akan dieksekusi jika salahA
atauB
mengevaluasi sebagai salah.Sebagai contoh:
Ini memberikan satu keuntungan dunia nyata dari
if-then-else
formulir di atasA && B || C
bentuk dan itu adalah kejelasan. Lebih jelas apa ituif-then-else
formulir lakukan, tetapi Anda perlu memahami aturan evaluasi untuk memahami apa ituA && B || C
formulir lakukan.Namun sering dapat bermanfaat untuk digunakan
A && B
atauA || B
. Itu lebih jelas dan dapat berguna ketika perintah sederhana sedang dijalankan. Terkadang satu baris alih-alih tiga lebih jelas, terutama ketika Anda mencoba menerima sejumlah besar kode.sumber
&& ||
dari padaif then else
adalah bahwa ia dapat menjalankan kedua perintah seperti itu dan perintah like-like (jika perintah pertama berhasil dan yang kedua gagal). Anda tidak benar-benar mengharapkanecho
perintah untuk gagal, tetapi itu bisa terjadi, dan itu akan sangat membingungkan jika memang pernah terjadi. Yang tepatif then else
pernyataan berjalan baikthen
perintah atauelse
perintah, tak pernah kedua.