Bjr,
Si sputnick passe par là, les golden awards vont pleuvoir 😃
useless of pipe, of cat, of for, ... et j'en passe.
je vais pas corriger ton script, mais si la vitesse d'execution est importante, il serait préférable de le coder en python, bash n'est pas le plus rapide des langages ...
Sinon, si tu veux rester avec bash, il faut éviter l'utilisation des pipes, ca ralenti le tout.
préférer la redirection:
echo $var | grep pattern
grep pattern <<< "${var}"
Egalement, préférer des solutions fullbash plutot que des outils tel que grep & co.
dans un boucle par exemple, plutot que;
while read line; do
if grep pattern <<< "${line}"
done
plus rapide:
while read line; do
[[ "${line}" =~ pattern ]] &&
done
J'ai vu que tu faisait 2 cat sur le même fichier avec un grep identique, bien que cela ne jouera pas vraiment sur la vitesse, autant mettre le contenu du
grep pattern fichier dans une variable, ensuite y récup tes éléments.
variable_fichier=$(grep "\ install\ " fichier)
allPackagesDate=$(cut -d ' ' -f1,2,3 <<< "${variable_fichier}")
dateInstal=$(tail -1 <<< "${variable_fichier}")
#découpe avec cut:
#dateInstal=$(cut -d ' ' -f1 <<< $dateInstal)
#découpe avec bash:
dateInstal=${dateInstal%% *}
Si tu n'as qu'un élément de la ligne à récupérer, plutot que cut, utilise la substitution bash, comme l'exemple ci-dessus, bcp plus rapide
Ce qui pique les yeux aussi, c'est l'utilsation de la boucle
for i in $(cat fichier), tu t'emm... à modifier l'IFS & co, alors que la boucle while est plus appropriée:
while read line
do
done < fichier
Il y aurait encore surement des choses à arranger, mais bon ....
Comme d'hab, c'est une façon de faire, il y a tjrs mieux, mais déjà, si tu modifie tout ça, tu gagnera un peu de temps, et ton code sera plus propre !