Trong hướng dẫn và cách làm tôi thường thấy các lệnh kết hợp. Ví dụ,
sudo apt-get update && sudo apt-get install pyrenamer
Dường như có bốn giắc nối có thể: &
, &&
, ||
và ;
. Mặc dù trình &
kết nối rõ ràng với tôi (nó gửi một quá trình đến nền và để thiết bị đầu cuối khả dụng), nhưng không rõ sự khác biệt giữa &&
và ;
. Và tôi đã không biết ||
cho đến khi bình luận của Kaya.
Các câu hỏi sau đây liên quan đến sự khác biệt giữa hai kết nối, nhưng chủ yếu là trong các ý kiến:
Vì vậy, đây là một số câu hỏi liên quan:
- Sự khác biệt giữa
;
và là&&
gì? - Khi nào bạn nên sử dụng chúng tương ứng? Sẽ thật tuyệt khi thấy một số trường hợp sử dụng: nếu tôi muốn chạy một lệnh và sau đó nó tắt máy tính của tôi, tôi nên chọn trình kết nối nào?
- Lợi thế và nguy hiểm của họ là gì? Robie Basak đề cập trong một bình luận cho câu trả lời này rằng một lệnh như thế
cd /somewhere_else; rm -Rf *
có thể gây ra hậu quả hủy diệt nếu phần tử đầu tiên trong chuỗi lệnh thất bại, chẳng hạn. - Nếu có liên quan, họ đến từ đâu?
set -e
sẽ dừng tập lệnh bị lỗi như thể tất cả các lệnh được kết nối với &&
.
||
cũng giống như&&
ngoại trừ việc nó chỉ thực thi lệnh thứ hai nếu lệnh đầu tiên thoát với trạng thái khác không (không thành công).