Mon script bash ne fonctionne pas comme je le souhaite:Comment puis-je faire fonctionner mon script bash?
#!/bin/bash
total="0"
count="0"
#FILE="$1" This is the easier way
for FILE in $*
do
# Start processing all processable files
while read line
do
if [[ "$line" =~ ^Total ]];
then
tmp=$(echo $line | cut -d':' -f2)
count=$(expr $count + 1)
total=$(expr $total + $tmp)
fi
done < $FILE
done
echo "The Total Is: $total"
echo "$FILE"
Y at-il une autre façon de modifier ce script afin qu'il lit des arguments en $1
au lieu de $FILE
? Je l'ai essayé d'utiliser une boucle while
:
while [ $1 != "" ]
do ....
done
Aussi, quand je mets en œuvre que le code se répète. Y a-t-il un moyen de régler cela aussi?
Un autre problème que j'ai est que quand j'ai plusieurs fichiers hi*.txt
il me donne des doublons. Pourquoi? J'ai des fichiers comme hi1.txt
hi1.txt~
mais le fichier tilde est de 0 octets, donc mon script ne devrait rien trouver.
Ce que j'ai est bien, mais pourrait être amélioré. J'apprécie vos suggestions awk mais c'est actuellement au-delà de mon niveau en tant que programmeur Unix. Strager: Les fichiers que mon éditeur de texte génère automatiquement ne contiennent rien .. il est de 0 octets..Mais ouais je suis allé de l'avant et les supprimés juste pour être sûr. Mais non, mon script est en train de tout lire deux fois. Je suppose que son looping encore quand il ne devrait pas. J'ai essayé de faire taire cette action avec les commandes de sortie ... Mais ce n'était pas réussi.
while [ "$1" != "" ]; do
# Code here
# Next argument
shift
done
Ce code est assez mignon, mais je spécifie toutes les commandes possibles en même temps. Exemple: hi [145] .txt Si fourni, les trois fichiers seraient lus simultanément. Supposons que l'utilisateur entre hi * .txt; Ensuite, je lis tous mes fichiers hi deux fois puis je les ajoute à nouveau.
Comment puis-je le coder pour qu'il lise mes fichiers (juste une fois) lors de la spécification de hi * .txt? Je pense vraiment que c'est parce que je n'ai pas 1 $.
Veuillez formater votre code un peu mieux. Sélectionnez tout cela et cliquez sur le petit bouton de code, ou au moins assurez-vous qu'il est indenté de quatre espaces. – Dustin