mengapa menempel xargs? bash bisa menangani ini dengan baik:
p=(`echo "param1 param2"`); echo ${p[0]} ${p[1]}
echo "'param 1' 'param 2'" | xargs -n1 | xargs [email protected] echo \[@\] \[@\]
(Di shell saya, saya harus keluar dari []
, jarak tempuh Anda mungkin berbeda).
Bagi mereka yang menemukan ini dari pencarian, jawaban yang diterima tidak bekerja untuk saya.
echo "'param 1' 'param 2'" | xargs -n1 | xargs [email protected] echo \[@\] \[@\]
menghasilkan:
[param 1] [param 1]
[param 2] [param 2]
yang tidak memenuhi persyaratan yang diberikan oleh poster asli agar xargs membaca di banyak entitas, memisahkannya, dan mengirimkannya ke satu perintah ("echo" di OP) sebagai parameter terpisah. Xargs tidak dirancang untuk tugas semacam ini!
Jawaban bash bisa berhasil.
p=(`echo "param1 param2"`); echo [${p[0]}] [${p[1]}]
menghasilkan:
[param1] [param2]
tetapi solusi ini tidak bekerja dengan lebih dari satu baris.
Solusi yang tepat dengan bash untuk mengirim pasangan baris sebagai argumen ke satu perintah adalah:
(echo 'param 1'; echo 'param 2'; echo 'param 3'; echo 'param 4') | while read line1; read line2; do echo "[$line1] [$line2]"; done
menghasilkan:
[param 1] [param 2]
[param 3] [param 4]
Jawaban Paralel GNU berfungsi, tetapi Paralel GNU harus dibuat dan diinstal. (Versi yang dikemas dengan Ubuntu bukanlah GNU Parallel.)