GNU/Linux >> Tutoriels Linux >  >> Linux

Canaliser une liste de valeurs vers un script bash ?

J'ai un scénario. myScript .

Il faut deux arguments. myScript arg1 arg2 .

Disons que j'ai trois séries d'arguments.

argA1 argB1
argA2 argB2
argA3 argB3

Existe-t-il un moyen de diriger chaque ligne vers myScript. Je suis ouvert à l'idée d'avoir l'ensemble des arguments dans un fichier, peut-être utiliser xargs. Je ne sais pas sur quoi enquêter.

Donc, je lancerais la commande comme un faux exemple ci-dessous :

cat myFile | xargs > myScript

Pour ne pas avoir un autre script, juste des commandes sur la ligne de commande.

Réponse acceptée :

Juste :

xargs -l1 <myFile myScript

-l1 indique xargs pour exécuter myScript une fois pour chaque 1 l ligne d'entrée, avec les mots dessus 1 l ine passé en tant qu'arguments séparés.

Pour xargs , les mots sont séparés par des espaces et vous pouvez toujours avoir des espaces (même des nouvelles lignes) dans un mot en utilisant des guillemets. Notez cependant que tant que xargs supporte "..." , '...' et \ pour citer comme la plupart des shells, son analyse est différente de celle des shells de type Bourne. En particulier, il n'y a pas de traitement antislash dans ni "..." ni '...' et seulement \ peut échapper une nouvelle ligne.

Par exemple, myFile pourrait contenir :

word1.1 word1.2
"word 2.1" 'word 2.2'
"word'3.1" 'word"3.2'
'word"'"4'1" word\"4\'2
'word '\
5.1 "word "\
5.2

Et

xargs -l1 <myFile printf 'First word: "%s", second word: "%s"\n'

produirait :

First word: "word1.1", second word: "word1.2"
First word: "word 2.1", second word: "word 2.2"
First word: "word'3.1", second word: "word"3.2"
First word: "word"4'1", second word: "word"4'2"
First word: "word
5.1", second word: "word
5.2"

Avec l'implémentation GNU de xargs , vous pouvez l'améliorer pour :

xargs -l1 -r -a myFile myScript

Ce qui a l'avantage de laisser stdin seul et de ne pas exécuter myScript si myFile est vide.


Linux
  1. Comment déboguer un script bash ?

  2. Exécuter le script bash à partir de l'URL

  3. alternatives --config script bash java

  4. nom de base avec des espaces dans un script bash ?

  5. Ajouter un script bash au chemin

35 exemples de scripts bash

Comment exécuter un script bash

Bash for loop Exemples

Exécuter le script bash en tant que démon

Correspondance de modèle de script bash

Exécutez la commande bash sur le pipeline jenkins