&&
là một toán tử logic. ;
là trình tự đơn giản.
Trong cmd1 && cmd2
, cmd2 sẽ chỉ được chạy nếu cmd1 thoát với mã trả về thành công.
Trong khi đó cmd1; cmd2
, cmd2 sẽ chạy bất kể trạng thái thoát của cmd1 (giả sử bạn chưa đặt shell của mình thoát khỏi tất cả các lỗi trong tập lệnh của bạn hoặc một cái gì đó).
Trên một lưu ý liên quan, với cmd1 || cmd2
, bằng cách sử dụng ||
toán tử logic 'OR', cmd2 sẽ chỉ được chạy nếu cmd1 không thành công (trả về mã thoát khác không).
Các toán tử logic này đôi khi được sử dụng trong các tập lệnh thay cho câu lệnh if cơ bản. Ví dụ,
if [[ -f "$foo" ]]; then mv "$foo" "${foo%.txt}.mkd"; fi
... có thể đạt được chính xác hơn với:
[[ -f "$foo" ]] && mv "$foo" "${foo%.txt}.mkd"
& (simple sequencing), && (conditional AND) and || (conditional OR)
.