我在perl中找到了这段代码
system("zip $ZIP_DEBUG -r -9 itvlib.zip $include $exclude");
但是我不明白它是如何工作的。我的意思是 system() 用于触发“系统”命令,对吗?那么这里使用的这个“zip”命令是“系统”命令吗? 但是我尝试在命令提示符下仅触发以下命令;
zip $ZIP_DEBUG -r -9 itvlib.zip arg1 arg2
没用! 它给出了以下错误:
'zip' is not recognized as an internal or external command,
operable program or batch file.
这不应该发生,因为该命令似乎使用“zip”作为系统命令。所以这使得命令 'zip' 神秘
你能帮我理解这个命令及其所有参数吗?
最佳答案
它可能不起作用,因为您没有将 $ZIP_DEBUG
之类的东西替换为它们的等效 真实 值。在 Perl 中,它们将被变量的值替换之前被传递给system
调用。
如果在执行 system
调用之前打印出那些 Perl 变量(甚至整个命令),您将找到需要使用的那些实际值。您可以使用以下成绩单来指导您:
$ perl -e '
> $ZIP_DEBUG = "xyzzy";
> $include = "inc_files";
> $exclude = "exc_files";
> print "zip $ZIP_DEBUG -r -9 itvlib.zip $include $exclude";
> '
zip xyzzy -r -9 itvlib.zip inc_files exc_files
有关 system
工作原理的详细信息,请参阅 here .有关 zip
需要运行的详细信息,您应该能够运行:
man zip
从命令行 shell(假设您使用的是 Linux 或其同类产品)。相反,如果您使用的是不同的操作系统(如 Windows),则必须弄清楚如何取出 zip 选项。这可能就像zip -h
的zip -?
一样简单,但不能保证一定有效。
如果它与 Linux 下的 Info-ZIP zip
相同(如果您有 -9
和 -r
可能是选项和您的 exclude
变量以 -x
开头),然后 zip -h
将为您提供基本帮助和 zip -h2
会给你更多。
https://stackoverflow.com/questions/8208265/