GNU/Linux >> Tutoriels Linux >  >> Linux

xargs peut-il séparer les paramètres ?

pourquoi coller xargs? bash pourrait bien gérer cela :

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

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

(Dans mon shell, j'ai besoin d'échapper à [] , votre kilométrage peut varier).


Pour ceux qui trouvent cela à partir d'une recherche, la réponse acceptée n'a pas fonctionné pour moi.

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

produit :

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

qui ne répond pas aux exigences données par l'affiche d'origine pour que xargs soit lu dans plusieurs entités, les sépare et les envoie à une seule commande ("echo" dans l'OP) en tant que paramètres séparés. Xargs n'est pas conçu pour ce genre de tâche !


La réponse bash peut fonctionner.

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

produit :

[param1] [param2]

mais cette solution ne fonctionne pas avec plus d'une ligne.


Une solution correcte avec bash pour envoyer des paires de lignes comme arguments à une seule commande est :

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

produit :

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


La réponse GNU Parallel fonctionne, mais GNU Parallel doit être créé et installé. (La version fournie avec Ubuntu n'est pas GNU Parallel.)


Linux
  1. Passage de plusieurs paramètres via Xargs ?

  2. Paramètres spéciaux de Bash expliqués avec 4 exemples de scripts Shell

  3. Paramètres positionnels de Bash expliqués avec 2 exemples de scripts Shell

  4. Comment puis-je déplacer des fichiers avec xargs sous Linux ?

  5. xargs --replace/-I pour les arguments simples

Bash peut-il écrire dans son propre flux d'entrée ?

Xargs :L'ordre des options est-il important ?

Comment puis-je compter le nombre de caractères dans une variable Bash

La commande linux cat peut-elle être utilisée pour écrire du texte dans un fichier?

Comment puis-je obtenir le dernier numéro de la chaîne dans bash?

Comment puis-je supprimer les fichiers en double dans des arborescences de répertoires distinctes ?