Ho un KSH (non Bash ) script che voglio anticipare con un controllo del conteggio dei file. Se non ci sono file, voglio stampare "VUOTO", quindi esci. Altrimenti procedi.
Il problema è quando eseguo il conteggio dei file, ed è VUOTO, quindi si interrompe.
Codice:
###################################################
# 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
Se non è vuoto, funziona.
Se vuoto, ottengo l'errore seguente, quindi il sistema si interrompe. Vorrei che segnalasse VUOTO ed esce da 0:
Errore:
/nas/Opt/databox/folder/ALLSTUFF*.zip not found
Cosa sbaglio?
Tentativo n. 2
Ho provato anche questo, ma ho ottenuto lo stesso risultato:
if [ "$(ls ${gp_path}ALLSTUFF*.zip)" ]; then
print 'NOT EMPTY'
else
print 'EMPTY'
exit 0
fi
Risposta accettata:
Puoi far scomparire il messaggio di errore con 2>/dev/null
all'interno di ls
.
Puoi quindi verificare se $CONTENTS
è vuoto 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