这是我的脚本:
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
或您的 shell 的文档(因为[
可能是内置的 shell)。
test
(这是 的全名[
)还允许您检查文件是否存在且不为空 ( test -s "$Z"
),或者是否存在且是常规文件 ( test -f "$Z"
) 等。