Các lệnh liên tiếp


13

Tôi có đúng không khi cho rằng khi ;tham gia hai lệnh trên một dòng, Bash luôn đợi cho đến khi lệnh đầu tiên thoát ra trước khi thực hiện lệnh thứ hai? Và tương tự, trong một tập lệnh shell chứa hai lệnh khác nhau trên các dòng khác nhau, Bash luôn đợi cho đến khi lệnh trên dòng đầu tiên thoát ra trước khi thực hiện lệnh trên dòng thứ hai?

Nếu đây là trường hợp, có cách nào để thực hiện hai lệnh trong một dòng hoặc trong một tập lệnh, để lệnh thứ hai không đợi cho đến khi lệnh đầu tiên kết thúc?

Ngoài ra, các dòng khác nhau trong tập lệnh shell có tương đương với các dòng riêng biệt được nối bởi ;hay &&không?


Câu trả lời:


25

Bạn đã đúng, các lệnh trong tập lệnh được thực thi tuần tự theo mặc định.

Bạn có thể chạy một lệnh trong nền bằng cách thêm nó vào &(một ký hiệu duy nhất).

Các lệnh trên các dòng riêng biệt tương đương với các lệnh được nối với ;mặc định. Nếu bạn yêu cầu shell của bạn hủy bỏ mã thoát khác không ( set -e), thì tập lệnh sẽ thực thi như thể tất cả các lệnh đã được nối với &&.


2

Để trả lời câu hỏi thứ hai của bạn, bạn có thể sử dụng &để khởi chạy một lệnh trong nền và tiếp tục với tập lệnh mà không cần đợi nó kết thúc.

commandA & commandB

Nếu bạn chạy lệnh này tại một thiết bị đầu cuối tương tác (thay vì tập lệnh), bạn có thể sử dụng fgđể đưa lệnh nền trở lại tiêu điểm hoặc jobsđể xem danh sách các tác vụ nền.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.