J'ai un KSH (pas Bash ) script que je veux préempter avec une vérification du nombre de fichiers. S'il n'y a pas de fichiers que je veux imprimer "VIDE", puis quittez. Sinon continuez.
Le problème est que lorsque j'effectue le comptage de fichiers et qu'il est VIDE, il se casse.
Code :
###################################################
# Test to see if files exist in Drop Folder
###################################################
CONTENTS=$(ls ${gp_path}ALLSTUFF*.zip)
if [[ ${#CONTENTS[@]} -eq 0 ]]; then
print 'EMPTY'
exit 0
else
print 'NOT EMPTY'
fi
S'il n'est pas vide, cela fonctionne.
S'il est vide, j'obtiens l'erreur ci-dessous, puis le système s'arrête. Je voudrais qu'il se contente de signaler EMPTY et de sortir 0 :
Erreur :
/nas/Opt/databox/folder/ALLSTUFF*.zip not found
Qu'est-ce que je fais de mal ?
Tentative #2
J'ai aussi essayé ceci, mais j'ai obtenu le même résultat :
if [ "$(ls ${gp_path}ALLSTUFF*.zip)" ]; then
print 'NOT EMPTY'
else
print 'EMPTY'
exit 0
fi
Réponse acceptée :
Vous pouvez faire disparaître le message d'erreur avec 2>/dev/null
à l'intérieur du ls
.
Vous pouvez ensuite vérifier si $CONTENTS
est vide avec -z
CONTENTS=$(ls -d -- "${gp_path}ALLSTUFF"*.zip 2>/dev/null)
if [ -z "$CONTENTS" ]; then
print 'EMPTY'
exit 0
else
print 'NOT EMPTY'
fi