Bagaimana cara menjalankan perintah untuk setiap baris stdin
segera?
Contoh :
(echo abc; sleep 10; echo def;) | ???
Itu xargs
alat tidak melakukan pekerjaan karena itu blok sampai ia melihat semua data (menunggu stdout untuk menutup). Namun saya harus segera menjalankan perintah ketika baris baru tersedia.
linux
command-line
bash
xargs
gnu-parallel
VasyaNovikov
sumber
sumber
xargs
berfungsi (ia menunggu / memblokir sampai ia melihat semua input).Jawaban:
Menggunakan GNU Parallel:
-u diperlukan untuk mendapatkan output segera. Tanpa perintah akan berjalan, tetapi output hanya akan dicetak nanti.
Pasukan -j1 menjalankan satu joblot tunggal. Meninggalkannya akan membuat GNU Parallel membaca n pekerjaan sebelum memulai, di mana n = jumlah inti.
sumber
parallel -u echo
, tetapi, seperti yang Anda katakan,-j1
itu perlu.Menggunakan skrip shell seperti yang disarankan oleh @Hennes:
sumber