Mám KSH (ne Bash ) skript, kterému chci zabránit kontrolou počtu souborů. Pokud nejsou žádné soubory, které chci vytisknout „PRÁZDNÝ“, ukončete. Jinak pokračujte.
Problém je, když provedu počítání souborů a je PRÁZDNÝ, pak se to zlomí.
Kód:
###################################################
# 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
Pokud není prázdný, funguje.
Pokud je prázdný, zobrazí se níže uvedená chyba a systém se přeruší. Chtěl bych, aby to jen nahlásilo PRÁZDNÉ a skončilo 0:
Chyba:
/nas/Opt/databox/folder/ALLSTUFF*.zip not found
Co dělám špatně?
Pokus č. 2
Zkoušel jsem to také, ale výsledek je stejný:
if [ "$(ls ${gp_path}ALLSTUFF*.zip)" ]; then
print 'NOT EMPTY'
else
print 'EMPTY'
exit 0
fi
Přijatá odpověď:
Chybovou zprávu můžete nechat zmizet pomocí 2>/dev/null
uvnitř ls
.
Poté můžete zkontrolovat, zda $CONTENTS
je prázdný s -z
CONTENTS=$(ls -d -- "${gp_path}ALLSTUFF"*.zip 2>/dev/null)
if [ -z "$CONTENTS" ]; then
print 'EMPTY'
exit 0
else
print 'NOT EMPTY'
fi
Povolit ostatním uživatelům kopírovat soubory ze složky?
Nedaří se vám získat správný výstupní kód ze skriptu?