zip command not working

后端 未结 7 905

I am trying to zip a file using shell script command. I am using following command:

  zip ./test/step1.zip $FILES

where $FILES contain all the

7条回答
  •  日久生厌
    2021-02-13 06:43

    Another possible cause that can generate a zip warning: name not matched: error is having any of zip's environment variables set incorrectly.

    From the man page:

    ENVIRONMENT
        The following environment variables are read and used by zip as described.
    
    ZIPOPT
        contains default options that will be used when running zip.  The contents of this environment variable will get added to the command line just after the zip command.
    
    ZIP
        [Not on RISC OS and VMS] see ZIPOPT
    
    Zip$Options
        [RISC OS] see ZIPOPT
    
    Zip$Exts
        [RISC OS] contains extensions separated by a : that will cause native filenames with one of the specified extensions to be added to the zip file with basename and extension swapped.
    
    ZIP_OPTS
        [VMS] see ZIPOPT
    

    In my case, I was using zip in a script and had the binary location in an environment variable ZIP so that we could change to a different zip binary easily without making tonnes of changes in the script.

    Example:

    ZIP=/usr/bin/zip
    ...
    ${ZIP} -r folder.zip folder
    

    This is then processed as:

    /usr/bin/zip /usr/bin/zip -r folder.zip folder
    

    And generates the errors:

    zip warning: name not matched: folder.zip
    zip I/O error: Operation not permitted
    zip error: Could not create output file (/usr/bin/zip.zip)
    

    The first because it's now trying to add folder.zip to the archive instead of using it as the archive. The second and third because it's trying to use the file /usr/bin/zip.zip as the archive which is (fortunately) not writable by a normal user.

    Note: This is a really old question, but I didn't find this answer anywhere, so I'm posting it to help future searchers (my future self included).

提交回复
热议问题