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 0taille si le wcou statéchoue. Je recommanderais statgé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

Posts les plus consultés de ce blog

Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

Détecter les appuis sur les touches fléchées en JavaScript

Une chaîne vide donne "Des erreurs ont été détectées dans les arguments de la ligne de commande, veuillez vous assurer que tous les arguments sont correctement définis"