Ich habe ein KSH (nicht Bash )-Skript, das ich mit einer Überprüfung der Dateianzahl verhindern möchte. Wenn keine Dateien vorhanden sind, möchte ich „LEER“ drucken, dann beenden. Andernfalls fortfahren.
Das Problem ist, wenn ich die Dateizählung durchführe und sie LEER ist, dann bricht sie ab.
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
Wenn nicht leer, funktioniert es.
Wenn leer, erhalte ich den folgenden Fehler, dann bricht das System zusammen. Ich möchte, dass es nur LEER meldet und 0 verlässt:
Fehler:
/nas/Opt/databox/folder/ALLSTUFF*.zip not found
Was mache ich falsch?
Versuch #2
Ich habe das auch versucht, aber ich habe das gleiche Ergebnis:
if [ "$(ls ${gp_path}ALLSTUFF*.zip)" ]; then
print 'NOT EMPTY'
else
print 'EMPTY'
exit 0
fi
Akzeptierte Antwort:
Sie können die Fehlermeldung mit 2>/dev/null
verschwinden lassen innerhalb des ls
.
Sie können dann überprüfen, ob $CONTENTS
ist leer mit -z
CONTENTS=$(ls -d -- "${gp_path}ALLSTUFF"*.zip 2>/dev/null)
if [ -z "$CONTENTS" ]; then
print 'EMPTY'
exit 0
else
print 'NOT EMPTY'
fi