我试图提取一个带有tar文件的目录,但它似乎不能正常工作。该命令在命令行中工作,但不适用于perl中的"system“。我真的需要它在perl中工作。
$tar_dir = "/root/updates/*.tar.bz2";
system ("for i in $tar_dir ; do tar xvfj $i; done");在命令行上工作,如:for i in *.bz2 ; do tar xvfj $i; done
我漏掉了什么吗?
谢谢
发布于 2013-12-08 20:04:18
或者,您可以将循环移动到Perl代码中:
use warnings;
use strict;
for (glob '/root/updates/*.tar.bz2') {
system "tar xvfj $_";
}发布于 2013-12-08 20:02:33
是的,您忘记了在perl字符串中转义$i。
尝试:
system ("for i in $tar_dir ; do tar xvfj \$i; done");如果你没有摆脱它,那么它就会像$tar_dir一样被扩展。确保您的perl脚本顶部有use strict;和use warnings;,这将有助于解决这类问题(在本例中,如果$i不是在perl脚本中定义的,那么您就会收到来自perl的消息,告诉您这个问题。)
https://stackoverflow.com/questions/20458326
复制相似问题