Gửi tác vụ đến nền trong một nếu có


10

Tại sao lại thế này?

if true; then sleep 3 &; fi
bash: syntax error near unexpected token `;'

tôi muốn chạy

sleep 3

trong nền để lệnh ["ngủ 3" chỉ là một ví dụ] sẽ chạy theo kiểu "paralell", vì vậy nó kết thúc nhanh hơn. Nhưng tôi đang nhận được điều này:

bash: syntax error near unexpected token `;'

thông báo lỗi. Tại sao? Tại sao tôi không thể gửi một nhiệm vụ đến nền?


Bạn nghĩ gì khi thử nghiệm với iftuyên bố?
glenn jackman

Câu trả lời:


6

Có vẻ như bạn không cần phải tách các lệnh trong trường hợp đó ( &tách chúng ra).

Ví dụ.

$> if true; then (sleep 3; echo ok) &  fi
[1] 14224
$> ok

8

Đó là bởi vì &đã là một dấu phân cách câu lệnh, vì vậy bạn không nên đặt ;sau này.

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.