これは私のスクリプトです。
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"