Cách thực hiện nhiều lệnh trong Bash, một số trong nền


2

Tôi muốn thực thi nhiều lệnh trong bash, nhưng có một số trong số chúng được thực thi trong nền. Cách tốt nhất để giải thích điều này là sử dụng lệnh sau không hoạt động ...

for@barpc:~> (sleep 30;command1;command2 param ) & ; anotherCommand

Tôi đoán điều này có thể được coi là hai câu hỏi:

  1. Làm thế nào để chấm dứt & trong một lệnh?
  2. Điều gì sẽ là một cách tốt hơn để đi về điều này?

Các chi tiết khác nếu chúng quan trọng:

  • Mở rộng 13.2
  • vỏ gnome

Câu trả lời:


3

Bạn nên thử

(sleep 5; ls) &  echo "Now"

Điều này hoạt động như bạn muốn nó.


1
Wow, nó đơn giản đến mức rõ ràng. Cảm ơn!
pcnate

Xin lưu ý rằng bằng cách này, bạn đã thêm một lớp vỏ phụ không cần thiết sẽ ngăn bạn chờ công việc nền hoàn thành nếu bạn cần.
Darkhogg

4

Tất cả bạn cần làm là loại bỏ ;. &tự nó hoạt động như một dấu phân cách lệnh, vì vậy việc thêm vào ;sau đó là không hợp lệ.

(sleep 30; command1; command2 param ) & anotherCommand

.

Đối với những cách tốt hơn để làm điều này ... điều đó thực sự phụ thuộc vào chính xác những gì bạn đang cố gắng làm. Chúng tôi cần thêm thông tin để đưa ra đề xuất tốt hơn.


Xin vui lòng, hãy nêu lên điều này, nó giải thích tại sao mã của OP không hoạt động thay vì ném dấu ngoặc một cách mù quáng với hy vọng nó sẽ hoạt động.
Darkhogg
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.