GNU/Linux >> Linux Esercitazione >  >> Linux

xargs può separare i parametri?

perché attaccare xargs? bash potrebbe gestirlo bene:

p=(`echo "param1 param2"`); echo ${p[0]} ${p[1]}

echo "'param 1' 'param 2'" | xargs -n1 | xargs [email protected] echo \[@\] \[@\]

(Nella mia shell devo sfuggire a [] , il tuo chilometraggio può variare).


Per coloro che lo trovano da una ricerca, la risposta accettata non ha funzionato per me.

echo "'param 1' 'param 2'" | xargs -n1 | xargs [email protected] echo \[@\] \[@\]

produce:

[param 1] [param 1]
[param 2] [param 2]

che non soddisfa i requisiti forniti dal poster originale per leggere xargs in più entità, separarle e inviarle a un singolo comando ("echo" nell'OP) come parametri separati. Xargs non è progettato per questo tipo di attività!


La risposta bash può funzionare.

p=(`echo "param1 param2"`); echo [${p[0]}] [${p[1]}]

produce:

[param1] [param2]

ma questa soluzione non funziona con più di una riga.


Una soluzione corretta con bash per inviare coppie di righe come argomenti a un singolo comando è:

(echo 'param 1'; echo 'param 2'; echo 'param 3'; echo 'param 4') | while read line1; read line2; do echo "[$line1] [$line2]"; done

produce:

[param 1] [param 2]
[param 3] [param 4]


La risposta GNU Parallel funziona, ma GNU Parallel deve essere creato e installato. (La versione fornita con Ubuntu non è GNU Parallel.)


Linux
  1. Passare più parametri tramite Xargs?

  2. Come posso trovare la versione di Fedora che uso?

  3. Come posso usare i comandi con alias con xargs?

  4. Leggi riga per riga nello script bash

  5. Come gestire più di 10 parametri in shell

eBPF può modificare il valore restituito o i parametri di una chiamata di sistema?

Come posso ottenere l'ultimo numero dalla stringa in bash?

Come posso rimuovere i file duplicati su alberi di directory separati?

Come posso spostare i file con xargs su Linux?

xargs --replace/-I per singoli argomenti

Come posso inviare un comando a un file, senza ottenere un file vuoto per errore?