Ý nghĩa của &&
và &
thực chất là khác nhau.
&&
trong bash
là gì? Trong bash
—và nhiều ngôn ngữ lập trình khác— &&
có nghĩa là “VÀ”. Và trong bối cảnh thực hiện lệnh như thế này, nó có nghĩa là các mục bên trái cũng như bên phải của &&
nên được chạy theo thứ tự trong trường hợp này.
&
trong bash
là gì? Và một đơn &
có nghĩa là các lệnh trước — ở bên trái ngay lập tức của &
— chỉ cần chạy dưới nền.
Vì vậy, nhìn vào ví dụ của bạn:
[email protected]:~$ test -x examples.desktop && echo $?
[email protected]:~$ test -x examples.desktop & echo $?
[1] 2992
0
Đầu tiên lệnh vì nó được cấu trúc-thực sự không trả lại bất cứ điều gì. Nhưng lệnh thứ hai trả về một [1] 2992
trong đó 2992
dùng để chỉ ID tiến trình (PID) đang chạy ở chế độ nền và 0
là đầu ra của lệnh đầu tiên.
Vì lệnh thứ hai chỉ chạy test -x examples.desktop
ở chế độ nền, nó diễn ra khá nhanh nên ID tiến trình được sinh ra và biến mất khá nhanh.
Bạn làm không giải thích hành vi bạn mong đợi. Điều gì về điều này là đáng ngạc nhiên? Tại sao nó đáng ngạc nhiên? Những gì mong đợi nó mâu thuẫn? –