GNU/Linux >> Belajar Linux >  >> Linux

dapatkah xargs memisahkan parameter?

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.)


Linux
  1. Melewati Beberapa Parameter Melalui Xargs?

  2. Parameter Khusus Bash Dijelaskan dengan 4 Contoh Skrip Shell

  3. Parameter Posisi Bash Dijelaskan dengan 2 Contoh Skrip Shell

  1. Bagaimana saya bisa menghitung jumlah karakter dalam variabel Bash

  2. Bisakah eBPF mengubah nilai pengembalian atau parameter syscall?

  3. Periksa apakah ada parameter ke skrip bash yang cocok dengan string

  1. Bisakah Bash Menulis Ke Aliran Inputnya Sendiri?

  2. Bagaimana saya bisa memindahkan file dengan xargs di Linux?

  3. Bagaimana saya bisa mengeluarkan perintah ke file, tanpa mendapatkan file kosong karena kesalahan?