Tôi có một đoạn script nhỏ lặp qua tất cả các tệp của một thư mục và thực thi lệnh (thường là kéo dài). Về cơ bản là
for file in ./folder/*;
do
./bin/myProgram $file > ./done/$file
done
(Vui lòng bỏ qua lỗi cú pháp, đó chỉ là mã giả).
Bây giờ tôi muốn chạy kịch bản này hai lần cùng một lúc. Rõ ràng, việc thực thi là không cần thiết nếu ./done/$file tồn tại. Vì vậy, tôi đã thay đổi kịch bản thành
for file in ./folder/*;
do
[ -f ./done/$file ] || ./bin/myProgram $file >./done/$file
done
Vì vậy, về cơ bản câu hỏi là: Có thể cả hai tập lệnh (hoặc nói chung nhiều hơn một tập lệnh) thực sự ở cùng một điểm và kiểm tra sự tồn tại của donetập tin bị lỗi và lệnh chạy hai lần?
nó sẽ là hoàn hảo, nhưng tôi rất nghi ngờ nó Điều này sẽ quá dễ dàng: D Nếu có thể xảy ra việc họ xử lý cùng một tệp, thì bằng cách nào đó có thể "đồng bộ hóa" các tập lệnh không?
done/$fileđiểm đánh dấu có vẻ hơi giống makemục tiêu đối với tôi.
xargshoặc GNU makehoặc một số phiên bản của parallel, thì không cần phải phát minh lại bánh xe cụ thể này.
xargsvới-Ptùy chọn có sẵn, hãy xem câu hỏi này .