Sự khác biệt giữa dấu và và dấu chấm phẩy trong Linux Bash là gì?
Ví dụ,
$ command1 && command2
vs
$ command1; command2
Sự khác biệt giữa dấu và và dấu chấm phẩy trong Linux Bash là gì?
Ví dụ,
$ command1 && command2
vs
$ command1; command2
Câu trả lời:
Các &&
nhà điều hành là một boolean VÀ điều hành: nếu phía bên trái trả về một tình trạng khác không xuất cảnh, trở về nhà điều hành mà tình trạng và không đánh giá phía bên phải (nó ngắn mạch), nếu không nó đánh giá phía bên phải và trả về trạng thái thoát của nó . Điều này thường được sử dụng để đảm bảo rằng command2
chỉ chạy nếu command1
chạy thành công.
Mã ;
thông báo chỉ tách các lệnh, vì vậy nó sẽ chạy lệnh thứ hai bất kể lệnh đầu tiên có thành công hay không.
&&
khác với ký hiệu đơn và &
trong bazơ?
&
khiến lệnh chạy trong nền, vì vậy có. "Chạy lệnh này trong nền" rất khác với "chỉ chạy lệnh tiếp theo này nếu lệnh kia thành công."
command1 && command2
thực thi command2
nếu (và chỉ khi) command1
việc thực thi kết thúc thành công. Trong biệt ngữ Unix, điều đó có nghĩa là mã thoát / mã trả về bằng không.
command1; command2
thực thi command2
sau khi thực thi command1
, tuần tự. Không quan trọng liệu các lệnh có thành công hay không.
Đầu tiên là một logic đơn giản AND
sử dụng đánh giá ngắn mạch, thứ hai chỉ đơn giản phân định hai lệnh.
Điều xảy ra trong thực tế là khi chương trình đầu tiên trả về mã thoát khác không, toàn bộ AND
được đánh giá thành FALSE
và lệnh thứ hai sẽ không được thực thi. Sau đó chỉ cần thực hiện cả hai theo thứ tự.