Bash“ file --mime-type”命令在Perl脚本中不起作用

问题描述 投票:0回答:1

我正在尝试在Perl脚本中运行bash命令。我正在使用system("file --mime-type $fileName);,但在其他命令(例如ls or pwd)正常工作时却无法使用。在终端中,显示“无法打开'Paper(filename)'(无此文件或目录)。下面是我的代码:-

foreach my $a(@ARGV)
    {
        opendir(DIR, $a) or die "You've Passed Invalid Directory as Arguments or $!\n";

        while(my $fileName = readdir DIR)
        {
            next if $fileName =~ /^\./; #this is to remove dotted hidden files.

            system("file --mime-type $fileName");

            print $fileName,"\n";
        }

        closedir(DIR);
    }

请在终端中查看错误消息的屏幕截图:

Error Message: Cannot Open 'Paper' file.

我想知道为什么这不能像其他命令一样工作?当我仅在终端中键入此命令时,它会正确显示文件类型,但不会在Perl脚本中显示。一些帮助将不胜感激。

linux bash perl command
1个回答
0
投票

$filename只是文件名,不包括目录部分。您需要将它们串联起来。另外,由于您没有使用shell解析,因此应该给system()提供一个参数列表。

system('file',  '--mime-type', "$a/$fileName");
© www.soinside.com 2019 - 2024. All rights reserved.