Sử dụng &&toán tử,
cmd1 && cmd2 && cmd3
Trong shellscripting, &&và các ||toán tử được mô hình hóa sau khi thực hiện tối ưu hóa các toán tử logic trong C. &&có nghĩa là toán tử AND và ||có nghĩa là OR. Unix có liên quan chặt chẽ với C và trong C, toán hạng thứ hai của toán tử logic không được đánh giá nếu kết quả đã được biết từ toán hạng thứ nhất. Ví dụ "false && x"là falsecho bất kỳ x, vì vậy không cần phải đánh giá x(đặc biệt nếu xlà một lệnh gọi hàm); tương tự cho "true || x". Điều này cũng được gọi là ngữ nghĩa ngắn mạch .
Và trong Unix, theo cách truyền thống là diễn giải các giá trị trả về của lệnh là giá trị thật "hoàn thành thành công": mã thoát 0 có nghĩa là true(thành công), không khác nghĩa false(thất bại). Vì vậy, khi lệnh đầu tiên cmd1 && cmd2trả về "false"(trạng thái thoát không khác, biểu thị sự thất bại), trạng thái của lệnh ghép được biết: thất bại. Vì vậy, giải thích tổng cmd1 && cmd2 thể có thể là: "thực thi cmd1, VÀ THÌ, nếu nó không thất bại cmd2". Đó là những gì bạn về cơ bản muốn trong câu hỏi của bạn.
Tương tự với OR: cmd1 || cmd2có thể được hiểu là "thực thi cmd1, HOẶC NẾU thất bại cmd2".
Protip: đối với chuỗi dài hơn &&, hãy xem xét đưa set -evào tập lệnh của bạn. Về cơ bản, nó thay đổi dấu chấm phẩy ;thành &&một vài trường hợp đặc biệt.