Giả sử bạn muốn chạy mười lần, cú pháp này sẽ hoạt động:
parallel -n0 foo.sh ::: {1..10}
parallel
cần một chuỗi đầu vào có độ dài ( ::: {1..10}
) VÀ bạn cần bỏ qua nội dung của chuỗi đầu vào ( -n0
), bạn chỉ quan tâm đến độ dài của nó.
Lệnh ban đầu của bạn : parallel foo.sh
, không chứa chuỗi đầu vào để cho biết mức độ song song bạn muốn. Cảnh báo khó hiểu đang nói với bạn rằng parallel
sẽ bắt đầu nghe thiết bị đầu cuối cho một chuỗi đầu vào, và đây có lẽ không phải là điều bạn muốn.
Đây là ví dụ hướng dẫn:
seq 10 | parallel -n0 my_command my_args
Làm thế nào nó hoạt động:
parallel
luôn luôn có một chuỗi đầu vào từ một nơi nào đó. Nó có thể là một chuỗi được phân tách bằng không gian nội tuyến được bắt đầu bằng :::
HOẶC một chuỗi được phân tách bằng dòng mới từ một tệp hoặc nguồn filelike như ống. Trong ví dụ này, chuỗi đầu vào là từ một đường ống.
seq 10
tạo ra một chuỗi các chữ số được phân tách bằng dòng mới từ một đến mười.
- Các
-n0
tùy chọn cho song song để bỏ qua các giá trị trong chuỗi đầu vào. Tất cả những gì chúng tôi quan tâm là độ dài của chuỗi, không phải nội dung của nó. Mặc dù các chữ số không được sử dụng, lệnh vẫn sẽ thực thi mười lần.
Một vi dụ khac:
parallel -n0 echo -n 'x' ::: {1..5}
Làm thế nào nó hoạt động:
- Trình tự đầu vào là nội tuyến.
{1..5}
tạo ra một chuỗi các chữ số được phân tách bằng dấu cách từ một đến năm.
-n0
bỏ qua các giá trị chuỗi ( 'x'
thay vào đó chúng tôi lặp lại chuỗi mỗi lần.)
- Đầu ra:
xxxxx
So với:
parallel echo -n ::: {1..5}
Làm thế nào nó hoạt động:
- Trình tự đầu vào là nội tuyến.
{1..5}
tạo ra một chuỗi các chữ số được phân tách bằng dấu cách từ một đến năm.
- Mỗi giá trị từ chuỗi đầu vào được sử dụng làm đối số
echo
. Đặt hàng không đảm bảo.
- Đầu ra :
43215
. Có thể là bất kỳ thứ tự.