Tôi đang cố gắng sử dụng xargs để chạy một lệnh cho mỗi đối số được cung cấp, nhưng thật không may, cờ --replace / -I dường như không hoạt động chính xác khi được kết hợp với -n. Có vẻ như {} sẽ mở rộng vào danh sách đầy đủ các đối số được đọc từ stdin, bất kể tùy chọn -n.
Thật không may, tất cả các ví dụ trên web dường như là dành cho các lệnh (mv, cp, rm) sẽ lấy nhiều đối số trong đó {} được mở rộng.
Ví dụ: khi chạy:
echo a b c d | xargs -n 1 -I {} echo derp {}
Đầu ra là:
derp a b c d
Nhưng tôi đã mong đợi:
derp a
derp b
derp c
derp d
Tuy nhiên, chạy nó mà không có -I {} mang lại kết quả như mong đợi:
echo a b c d | xargs -n 1 echo derp
derp a
derp b
derp c
derp d
Có cách nào để đạt được điều này với xargs không? Mục đích cuối cùng của tôi là sử dụng nó để chạy nhiều phiên ssh (parralel), như
echo server{1..90} | xargs -n 1 -P 0 -I {} ssh {} 'echo $SOME_HOST_INFO'
Tôi đang chạy xargs (GNU findutils) 4.4.2
trên RHEL 6.3.
man xargs
trên -I
: Also, unquoted blanks do not terminate input items; instead the separator is the newline character. Implies -x and -L 1.
Vì vậy, nó hoạt động như thiết kế.
xargs
, nhưng không phải GNUxargs
.