Tôi xin lỗi trước nếu đây là một câu hỏi trùng lặp. Tôi đã nỗ lực tìm kiếm / kiểm tra trước khi hỏi ở đây.
Tôi cảm thấy thoải mái với việc viết một lớp như thế này:
foocommand && foocommand2 && foocommand3
Ý tưởng là tôi chỉ muốn các lệnh tiếp theo chạy nếu lệnh trước đó "thành công".
Tôi đang viết một đoạn script hơi dài và đoạn mã này không khả thi vì nó trông giống như một khối mã lớn gây nhầm lẫn cho những người khác.
Tôi muốn loại bỏ các lệnh và viết bình luận giữa chúng trong kịch bản. Làm cách nào tôi có thể làm điều này mà vẫn có tương đương với && trong đó?
||
và &&
(trái ngược với |
hoặc &
) được gọi là ngắn mạch. Hành vi được sử dụng với các toán tử sau được gọi là đánh giá háo hức.
a && b && c
sẽ chỉ chạy b
nếu a
thành công, vì vậy "nó chỉ chạy c
nếu b
thành công" và "nó chỉ chạy c
nếu a
và b
cả hai thành công" là những tuyên bố tương đương: b
không thể thành công trừ khi a
thành công.
a || b && c
mang tính minh họa hơn.
true || false && echo hi
sẽ xuất hi
. Thông số kỹ thuật đọc, Toán tử "&&" và "||" sẽ có quyền ưu tiên như nhau và sẽ được đánh giá với tính kết hợp trái.
&&
không có nghĩa là lệnh tiếp theo sẽ chạy nếu trước đó một đã thành công. Nó có nghĩa là lệnh sẽ chạy nếu kết quả chung của tất cả các lệnh trước đó trong danh sách lệnh là thành công. Bạn có thể biết điều này, nhưng độc giả tương lai có thể hiểu sai.