2010-04-08 5 views
1

Comment puis-je passer chaque ligne d'un fichier texte en tant qu'argument à un script que j'ai écrit? Chaque ligne est donc en elle-même un argument unique pour le script à chaque fois.Passer des lignes en tant qu'args à un script

+3

Soyez plus précis. Pourquoi la balise perl est-elle là? Est-ce que vous lisez les lignes dans perl et passez ensuite à un script, ou est le script que vous passez à perl? Si ce dernier, que la balise perl est sans importance et vous devez nous dire quelle langue vous voulez automatiser l'argument passant po –

+0

Le cas est le dernier. Toute langue est bien en passant l'argument. – syker

Répondre

3
cat file | xargs --replace script {} 

Je dois souligner que si vous voulez que chaque ligne du fichier à traiter comme un argument à votre script, ajouter des guillemets, le cas échéant à la {}, \ le plus probable « {} \ »

+0

Incorrect, {} sera remplacé par un argument quel que soit le contenu. Ce que vous voulez, c'est changer le délimiteur de n'importe quel espace (par défaut) à newlines-only, en utilisant '-d '\ n'' ou similaire. – ephemient

1

vous pouvez le faire

while read -r line 
do 
    ./script_i_have_written.sh "$line" 
done <"file" 

mais pourquoi faire quand dans votre « script_i_have_written.sh », vous pouvez analyser le fichier texte immédiatement

#!/bin/bash 
# script_i_have_written.sh 
while read -r line 
do 
    echo "do something with $line" 
done <"file" 
2

Pas besoin de cat

xargs -I {} --arg-file input-file script_file {} 
Questions connexes