Saya memiliki KSH (bukan Bash ) skrip yang ingin saya awali dengan pemeriksaan jumlah file. Jika tidak ada file yang ingin saya cetak "KOSONG" lalu keluar. Jika tidak, lanjutkan.
Masalahnya adalah ketika saya melakukan penghitungan file, dan itu KOSONG, lalu rusak.
Kode:
###################################################
# 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
Jika tidak kosong, itu berfungsi.
Jika kosong, saya mendapatkan kesalahan di bawah ini maka sistem rusak. Saya ingin melaporkannya KOSONG dan keluar 0:
Kesalahan:
/nas/Opt/databox/folder/ALLSTUFF*.zip not found
Apa yang saya lakukan salah?
Percobaan #2
Saya mencoba ini juga, tetapi saya mendapatkan hasil yang sama:
if [ "$(ls ${gp_path}ALLSTUFF*.zip)" ]; then
print 'NOT EMPTY'
else
print 'EMPTY'
exit 0
fi
Jawaban yang Diterima:
Anda dapat menghilangkan pesan kesalahan dengan 2>/dev/null
di dalam ls
.
Anda kemudian dapat memeriksa untuk melihat apakah $CONTENTS
kosong dengan -z
CONTENTS=$(ls -d -- "${gp_path}ALLSTUFF"*.zip 2>/dev/null)
if [ -z "$CONTENTS" ]; then
print 'EMPTY'
exit 0
else
print 'NOT EMPTY'
fi
Izinkan Pengguna Lain Menyalin File Dari Folder?
Tidak Dapat Mendapatkan Kode Keluar yang Tepat Dari Script?