La logique du script bash échoue occasionnellement
Ce script vérifie la taille d'un fichier. S'il est inférieur à la "taille minimale", il doit exécuter le script python. Cependant, s'il dépasse la taille minimale, le script ne doit rien faire et se terminer. Le problème que j'ai est que parfois, lorsque le fichier dépasse la taille minimale, le script python s'exécute toujours. Qu'est-ce que je ne vois pas?
#!/bin/bash
todays=$(date +%m-%d-%Y)
file_prefix=./csv/data_
file_suffix=.csv
file=${file_prefix}${todays}${file_suffix}
echo $file
minimumsize=64
actualsize=$(wc -c <"$file")
echo
if [ "$actualsize" -ge "$minimumsize" ]; then
echo size is over $minimumsize bytes
else
echo size is under $minimumsize bytes
#Script to run if filesize is under minimum size
/usr/bin/python3 /home/shannon/scripts/myscript.py
fi
Solution du problème
Il se peut que le fichier soit parfois manquant. Vous pouvez résoudre ce problème plus facilement en substituant une 0
taille si le wc
ou stat
échoue. Je recommanderais stat
généralement, car il ne lit pas réellement le fichier, ce qui peut être utile si le fichier est volumineux ou si le script n'a pas l'autorisation de lire le fichier.
#!/bin/bash
file=./csv/data_$(date +%m-%d-%Y).csv
minimumsize=64
actualsize=$(stat -c%s $file 2>/dev/null || echo 0)
echo $file
echo
if [ $actualsize -ge $minimumsize ]; then
echo size is over $minimumsize bytes
else
echo size is under $minimumsize bytes
# Script to run if filesize is under minimum size
/usr/bin/python3 /home/shannon/scripts/myscript.py
fi
Commentaires
Enregistrer un commentaire