繁体   English   中英

Perl:在Shell环境中运行系统命令

[英]Perl: run system command with shell environment

尝试在完整的shell环境中运行perl system命令。 与shell = True的Python Popen相似。 尝试过系统('/ bin / bash -c“ something”'),但是没有用。 有人将一个非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

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

#!/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";

您可以编辑问题以包括该程序的输出吗?

会发生什么:

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

因此看来,如果使用system()命令,则除非看到外壳元字符或arg为标量形式,否则它不会真正调用外壳。 因此,system(“ echo real shell”)在我的情况下有效,而system(“ echo”,“ real”,“ shell”)无效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM