ZIP 命令行中有什么错误?

ZIP 命令行中有什么错误?

我正在开发 AWS Lambda (NET6)。在 CloudFormation yml 文件中执行 Github 操作(构建、压缩、上传)期间,我收到以下错误:

Run zip -jr customerlambda-356e9e4b8869b2cf7f483d739aa5a8aa34e0fc13.zip -i ./bin/Release/net6.0/publish/*

zip error: Invalid command arguments (nothing to select from)
Error: Process completed with exit code 16.

它处于 Ubuntu 最新环境中。

这哪里是错误的?

答案1

你似乎想要:

zip -jr customerlambda-356e9e4b8869b2cf7f483d739aa5a8aa34e0fc13.zip \
./bin/Release/net6.0/publish/

IE没有 -i... 使用-i(包括) 选项,您仍然没有指定源文件/目录的路径,因此出现错误:

zip error: Invalid command arguments (nothing to select from)

注意一条:

./bin/Release/net6.0/publish/似乎是源文件/目录所在的相对路径,但-i在它前面添加会将其变成选项的参数-i而不是命令本身的参数zip...因此就命令而言zip,没有源文件/目录参数...并且,您不需要包含该目录的内容,因为-i-r选项将递归遍历该目录的内容,所以您不需要使用*\*使用时最好用反斜杠转义) 或者 ... 所以只需删除-i*

注意事项二:

-j选项将导致zip仅存储已保存文件的名称,而不存储目录名称(即相对于当前目录的路径)... 这可能会在与选项一起使用时引起问题,-r因为在由选项集递归的子目录中可能存在重复的相同文件名,-r这将导致zip接收重复的文件名并存储在存档中,而存档无法做到这一点,并将导致如下错误:

zip error: Invalid command arguments (cannot repeat names in zip file)

-j因此,在这种情况下您可能不想使用。

注意三:

./subdir/subdir2/虽然和形式的相对路径archive.zip可以工作并相对于当前工作目录进行解析,但在脚本文件中对输出存档和源目录/文件都使用完整的真实路径可能是一个好主意,例如如果您的源目录是:

/home/runner/work/PM2AWSCustomers/PM2AWSCustomers/bin/Release/net6.0/publish/

并且您希望将生成的存档文件命名为customerlambda.zip并保存在:

/home/runner/work/PM2AWSCustomers/

然后使用zip如下命令:

zip -r /home/runner/work/PM2AWSCustomers/customerlambda.zip \
/home/runner/work/PM2AWSCustomers/PM2AWSCustomers/bin/Release/net6.0/publish/

反斜杠\用于转义本文中用于可读性目的的换行符,并将使 shell 将命令读取为一行,而忽略转义的换行符。

相关内容