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.