Sử dụng song song để chạy tập lệnh mà không cần nhập


10

Tôi đang cố gắng chạy nhiều phiên bản của tập lệnh với GNU song song, nhưng tập lệnh không có đối số.

Nếu tôi chỉ thực hiện 'song song foo.sh' tôi sẽ nhận được điều này:

parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.

Câu trả lời:


10

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}

parallelcầ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 parallelsẽ 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:

  • parallelluô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 -n0tù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.
  • -n0bỏ 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ự.

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.