Ho un copione. myScript .
Ci vogliono due arg. myScript arg1 arg2 .
Diciamo che ho tre serie di argomenti.
argA1 argB1
argA2 argB2
argA3 argB3
C'è un modo per reindirizzare ogni riga a myScript. Sono aperto ad avere il set di args in un file, forse uso xargs. Non sono sicuro su cosa indagare.
Quindi eseguirei il comando come un falso esempio di seguito:
cat myFile | xargs > myScript
Per non avere un altro script, solo comandi da riga di comando.
Risposta accettata:
Solo:
xargs -l1 <myFile myScript
-l1 dice a xargs per eseguire myScript una volta per ogni 1 l ine di input, con le parole su quel 1 l ine passato come argomenti separati.
Per xargs , le parole sono separate da spazi bianchi e puoi ancora avere spazi bianchi (anche nuove righe) in una parola usando le virgolette. Nota tuttavia che mentre xargs supporta "..." , '...' e \ per citare come la maggior parte delle shell, la sua analisi è diversa da quella delle shell tipo Bourne. In particolare, non c'è elaborazione della barra rovesciata né in "..." né '...' e solo \ può sfuggire a una nuova riga.
Ad esempio, myFile potrebbe contenere:
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
E
xargs -l1 <myFile printf 'First word: "%s", second word: "%s"\n'
produrrebbe:
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"
Con l'implementazione GNU di xargs , puoi migliorarlo in:
xargs -l1 -r -a myFile myScript
Che ha il vantaggio di lasciare stdin da solo e di non eseguire myScript se myFile è vuoto.