ファイルを解凍するためのBashスクリプト - エラー:見つからないか開けません。

ファイルを解凍するためのBashスクリプト - エラー:見つからないか開けません。

これは私のスクリプトです。

Z=/var/pixel/sftp/gisftp/pixel_images/pixel_images_archive.zip
if [ $Z ]; then
    echo "$Z exists"
    unzip $Z -d test
else
   echo "$Z doesn't exist!"
fi

スクリプトを実行すると、次の結果が表示されます。

/var/pixel/sftp/gisftp/pixel_images/pixel_images_archive.zip exists
unzip:  cannot find or open
/var/pixel/sftp/gisftp/pixel_images/pixel_images_archive.zip, /var/pixel/sftp/gisftp/pixel_images/pixel_images_archive.zip.zip or /var/pixel/sftp/gisftp/pixel_images/pixel_images_archive.zip.ZIP.

どのように存在しながら同時に存在しないことができますか? ?

この問題をどのように解決するのですか?

答え1

[ $Z ]文字列が空でないか([ -n "$Z" ]望ましい)だけをテストし、文字列と呼ばれるファイルが存在するかどうかをテストしないでください。これに使用されます[ -e "$Z" ]。マニュアルページをご覧くださいtestまたはシェルのドキュメント([組み込みシェルの場合もあります)。

test(のフルネーム)を使用すると、ファイルが存在し、空でないか()、または存在し、通常のファイルであるか()などを[確認できます。test -s "$Z"test -f "$Z"

関連情報