如何在Perl脚本中调用shell命令?
如何调用shell命令,例如Perl脚本中的'如何在Perl脚本中调用shell命令?,perl,Perl,如何调用shell命令,例如Perl脚本中的'ls-a',以及如何检索命令输出的示例是什么? 1。使用系统system($command,@arguments) 例如: system("sh", "script.sh", "--help" ); system("sh script.sh --help"); 系统将使用 @参数,并在完成后返回脚本。你可以查美元! 对于外部应用程序传递给操作系统的某些错误。阅读 该文件为系统提供了各种不同的细微差别 调用略有不同 2。使用exec my $out
ls-a
',以及如何检索命令输出的示例是什么?
1。使用系统system($command,@arguments)代码>
例如:
system("sh", "script.sh", "--help" );
system("sh script.sh --help");
系统将使用
@参数,并在完成后返回脚本。你可以查美元!
对于外部应用程序传递给操作系统的某些错误。阅读
该文件为系统提供了各种不同的细微差别
调用略有不同
2。使用exec
my $output = `script.sh --option`;
my $output = qx/script.sh --option/;
这与的使用非常相似,但它将
执行时终止脚本。再次阅读文档
为了更多
3。使用反勾号或qx/
my $output = `script.sh --option`;
my $output = qx/script.sh --option/;
backtick操作符及其等价的qx/
,在操作符内部执行命令和选项,并在完成时将命令输出返回到STDOUT
也有通过创造性地使用来运行外部应用程序的方法,但这是高级使用;阅读文档了解更多信息
看看Perl中的函数——特别是在参数中使用“|”(管道)的变体。如果操作正确,您将获得一个文件句柄,可用于读取命令的输出。反向勾选操作符也会这样做
您可能还想查看Perl是否可以访问命令本身使用的C函数。例如,对于
ls-a
,您可以使用该函数,然后使用该函数读取文件名,最后使用(意外地)该函数关闭目录。这有很多好处——精度可能比速度更重要。使用这些函数,即使文件名包含诸如换行符之类的奇数字符,也可以获得正确的数据。有很多方法可以从Perl脚本调用shell命令,例如:
ls
捕获输出并返回给您`ls-l`代码>
系统(“ls-l”)代码>
exec(“ls-l”)代码>
如果需要双向通信,您可能需要深入研究。随着您使用Perl的经验越来越丰富,您会发现需要运行shell命令的情况越来越少。例如,获取文件列表的一种方法是使用Perl的内置函数。如果希望列表按排序顺序排列,可以将其与内置函数结合使用。如果需要每个文件的详细信息,可以使用该函数。下面是一个例子:
#!/usr/bin/perl
use strict;
use warnings;
foreach my $file ( sort glob('/home/grant/*') ) {
my($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks)
= stat($file);
printf("%-40s %8u bytes\n", $file, $size);
}
从中,从Perl执行外部命令的最常见方法是:
-捕获my$files=`ls-la`
$files
-如果不想捕获命令的输出系统“touch~/foo”
-如果执行命令后不想返回脚本exec“vim~/foo”
-如果要将输入导入命令open(我的$file,“|-”,“grep foo”);打印$file“foo\nbar”
ls
以外的命令,但是,如果用户实际上要呼叫ls
,那么这个答案应该得到认可,因为它回答了用户的意图,而不是他们的实际问题。