2010-10-14 18 views
2

J'écris un script qui va plier, trier et compter le texte dans un fichier. J'ai besoin de concevoir le programme de sorte que, si on lui donne plusieurs noms de fichiers sur la ligne de commande, il traite chacun séparément, l'un après l'autre. Je pense que je pourrais écrire une boucle, mais je ne sais pas encore beaucoup de choses à ce sujet, si possible, j'aimerais essayer d'autres options. Y a-t-il d'autres options que je peux ajouter pour que plus d'un nom de fichier puisse être entré dans la ligne de commande?Unix Script pour traiter plusieurs noms de fichiers

si le test $ # -lt 1 puis echo "utilisation: 0 $ Entrez au moins un ADN nom de fichier" sortie fi si le test -r $ * puis rabattez -W3 $ * | trier | uniq -c | sorte -k1,1nr -k2 autre
echo "utilisation: $ * doit être lisible" sortie fi

Nena

Répondre

3

boucle for sera appropriée ici. La forme suivante est utilisée pour itérer sur des arguments de position:

for f; do 
    # do work here using "$f" as the current argument 
done 

Cela équivaut à une version plus détaillée:

for f in "[email protected]"; do 
    # do work here using "$f" as the current argument 
done 
+0

Merci Roman, j'ai besoin d'en savoir plus sur la boucle "for". Bonne réponse. – Koala

1

Vous pouvez utiliser une boucle while et shift à itérer les arguments de ligne de commande un par un comme:

if test $# -lt 1 # insufficient arguments. 
then 
    echo "usage: $0 Enter at least one DNA filename" 
    exit 
fi 

# loop through the argument on by one. 
# till their number($#) becomes 0. 
while test $# -gt 0 
do  
if test -r "$1" # use $1..$* represent all arguments. 
then 
    fold -w3 "$1" | sort | uniq -c | sort -k1,1nr -k2 
else 
    echo "usage: $1 must be readable" 
    exit 
fi 

# shift so that 2nd argument now comes in $1. 
shift 

done 
+0

Merci codaddict. Cela a bien fonctionné. – Koala

+0

C'est une manière horriblement compliquée, et il manque des guillemets autour de $ 1. @ user475364: juste aller avec [la réponse de Roman Cheplyaka] (http://stackoverflow.com/questions/3930403/unix-script-to-process-multiple-file-names/3930534#3930534). – Gilles