【问题标题】:Perl: run system command with shell environmentPerl:在 shell 环境下运行系统命令
【发布时间】:2011-10-15 15:24:34
【问题描述】:

尝试在完整的 shell 环境中运行 perl 系统命令。类似于 Python 的 Popen,shell=True。尝试了 system('/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

【问题讨论】:

  • Perl system 已经通过 shell 运行命令,除非您使用多个参数调用它。阅读docs

标签: perl shell system


【解决方案1】:

会发生什么:

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

【讨论】:

    【解决方案2】:

    因此,如果您使用 system() 命令,除非看到 shell 元字符或 arg 是标量形式,否则它似乎不会真正调用 shell。所以 system("echo real shell") 在我的情况下有效,但不是 system("echo", "real", "shell")。

    【讨论】:

      猜你喜欢
      • 2013-06-10
      • 2014-03-18
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      • 2011-11-03
      • 2013-06-12
      • 2013-04-16
      • 2011-02-12
      相关资源
      最近更新 更多