Tengo un KSH (no Bash ) script que quiero adelantar con una verificación de conteo de archivos. Si no hay ningún archivo que desee imprimir "VACÍO", salga. De lo contrario, proceda.
El problema es cuando realizo el recuento de archivos y está VACÍO, luego se rompe.
Código:
###################################################
# 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
Si no está vacío, funciona.
Si está vacío, aparece el siguiente error y luego el sistema se rompe. Me gustaría que solo informe VACÍO y salga 0:
Error:
/nas/Opt/databox/folder/ALLSTUFF*.zip not found
¿Qué estoy haciendo mal?
Intento #2
Intenté esto también, pero obtuve el mismo resultado:
if [ "$(ls ${gp_path}ALLSTUFF*.zip)" ]; then
print 'NOT EMPTY'
else
print 'EMPTY'
exit 0
fi
Respuesta aceptada:
Puede hacer desaparecer el mensaje de error con 2>/dev/null
dentro del ls
.
A continuación, puede comprobar si $CONTENTS
está vacío con -z
CONTENTS=$(ls -d -- "${gp_path}ALLSTUFF"*.zip 2>/dev/null)
if [ -z "$CONTENTS" ]; then
print 'EMPTY'
exit 0
else
print 'NOT EMPTY'
fi