私はKSHを持っています(バッシュではありません )ファイル数チェックでプリエンプトしたいスクリプト。 「EMPTY」を印刷したいファイルがない場合は、終了します。それ以外の場合は続行します。
問題は、ファイルカウントを実行するときに、空の場合に壊れてしまうことです。
コード:
###################################################
# 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
空でない場合は機能します。
空の場合、以下のエラーが発生し、システムが壊れます。 EMPTYを報告して0を終了するだけにしたい:
エラー:
/nas/Opt/databox/folder/ALLSTUFF*.zip not found
何が間違っているのですか?
試行#2
これも試しましたが、同じ結果が得られました:
if [ "$(ls ${gp_path}ALLSTUFF*.zip)" ]; then
print 'NOT EMPTY'
else
print 'EMPTY'
exit 0
fi
承認された回答:
2>/dev/null
を使用すると、エラーメッセージを非表示にすることができます。 ls
内 。
次に、$CONTENTS
かどうかを確認できます -z
で空です
CONTENTS=$(ls -d -- "${gp_path}ALLSTUFF"*.zip 2>/dev/null)
if [ -z "$CONTENTS" ]; then
print 'EMPTY'
exit 0
else
print 'NOT EMPTY'
fi