이것은 내 스크립트입니다.
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"