我试图使用
shell脚本命令压缩文件.我正在使用以下命令:
zip ./test/step1.zip $FILES
其中$FILES包含所有输入文件.但我正在收到如下警告
zip warning: name not matched: myfile.dat
另外还有一件事我观察到一个文件夹中文件列表中的文件最后有上述警告,该文件没有被压缩.
任何人都可以解释为什么会发生这种情况?我是shell脚本世界的新手.
解决方法
zip warning: name not matched: myfile.dat
这意味着文件myfile.dat不存在.
正如你所说,$FILES中的最后一个文件是什么,它不会与警告一起添加到zip中.所以我认为创建$FILES的方式有问题.机会在最后一个文件名的末尾有一个换行符,回车符,空格,制表符或其他不可见的字符,导致不存在的东西.尝试这个例子:
for f in $FILES; do echo :$f:; done
我打赌最后一行会不正确,例如:
:myfile.dat :
…或类似的东西,而不是:myfile.dat:最后没有字符:
UPDATE
如果你说这个脚本在运行dos2unix之后开始工作,那么这就证实了每一个人都怀疑的东西,那就是你的$FILES列表的末尾有一个回车.