Perl:使用shell环境运行系统命令

时间:2011-07-29 02:59:38

标签: perl shell system

尝试使用完整的shell环境运行perl系统命令。类似于Python的Popen,shell = True。尝试系统('/ bin / bash -c“某事”')并且不起作用。有人挂了一个非perl家伙!

---更新---

# ./test.pl 
ENV-PATH: /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
sys-PATH: /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

3 个答案:

答案 0 :(得分:1)

如果运行以下脚本会发生什么:

#!/usr/bin/perl                                                                                                                                                                                                                            

use strict;
use warnings;

my $path = $ENV{'PATH'};
print "ENV-PATH: ";
print $path;
print "\n";

print "sys-PATH: ";
system("echo \$PATH") == 0 or die;
print "\n";

您可以编辑您的问题以包含此计划的输出吗?

答案 1 :(得分:0)

会发生什么:

my $rc = system "/bin/bash", "-c", "shell command to run with arguments";
if ($rc != 0) {print "command failed: $?";}

答案 2 :(得分:0)

所以看起来如果使用system()命令,它不会真正调用shell,除非看到shell元字符或者arg是标量形式。所以系统(“echo real shell”)在我的情况下工作,但不适用于系统(“echo”,“real”,“shell”)。