2016-08-07 17 views
0

私はLinuxで経験が不足しています zipファイルが空の場合、つまりzipファイルがない場合はbashスクリプトをチェックする必要があります。私はこのコードを見つけ :zipファイルが空であるかどうかを確認するBashスクリプト

if ! zipinfo ${filetotransfer} | tail -n 1 | grep '^0 ' >/dev/null ; then # we have empty zip file! 
    echo " zip empty" 
    rm $filetotransfer 
    exit 0 
fi 

をしかし、ジッパーが空であるかどうか、それは両方のファイルを削除します。 これを確認する方法はありますか?

+0

と22は、あなたが期待どおりに、条件付き動作することをテストしているのですか? 'zipinfo $ {filetotransfer}の出力は何ですか?テール-n 1 | grep '^ 0' '?リターンコードはどうですか?彼らはあなたが期待しているものですか? – larsks

+0

私はそれをテストしました:それはすべての場合にファイルを削除します。 – Slava

+0

実際に、私が尋ねた2つの具体的な質問のどちらにも答えません。がんばろう! – larsks

答えて

0

あなたはzipinfo -t

f=test.zip 
if zipinfo -t "$f" > /dev/null 
then 
    echo "not empy" 
else 
    echo "empty" 
fi 
+0

slitvinov、それは働いているように見えます!ありがとうございました! – Slava

1

のエラー状態を確認することができますあなただけのファイルサイズを確認することができSTATかのmd5sumやzipヘッダー

# by checking file size 
% stat -f%z a.zip 
22 

% xxd a.zip 
0000000: 504b 0506 0000 0000 0000 0000 0000 0000 PK.............. 
0000010: 0000 0000 0000       ...... 

# with md5sum 
$ md5sum a.zip 
76cdb2bad9582d23c1f6f4d868218d6c a.zip 

# or by checking zip header 
% [ `head -n22 a.zip | tr -d '\0-\6'` = "PK" ] && echo 1 
1 
関連する問題