【问题标题】:How to use shell command result in perl script?如何在 perl 脚本中使用 shell 命令结果?
【发布时间】:2012-03-16 20:21:59
【问题描述】:

谁能告诉我,如何在 Perl 脚本中使用 shell 命令结果?

#!/usr/bin/perl
$whoami=`whoami`;
system ('cd /var/home/'.$whoami.'/htdocs');
print $whoami;

脚本输出

[user1@srv _1]$ ./sys.pl
sh: line 1: /htdocs: No such file or directory
user1

我想将目录更改为 /var/home/user1/htdocs

【问题讨论】:

  • 请注意,任何解决方案(以及您更正的代码)都不会改变您程序的工作目录!

标签: perl shell


【解决方案1】:

$whoami 包含结束符\n,这会使您的命令字符串看起来像:

cd /var/home/user1
/htdocs

您应该使用chomp 删除$whoami 的尾随换行符:

my $whoami = `whoami`;
chomp $whoami;

【讨论】:

    【解决方案2】:

    这可以在没有脱壳的情况下完成:

    #!perl
    my $dir = '/home/'.getlogin().'/htdocs';
    chdir $dir;
    

    【讨论】:

      【解决方案3】:
      #!/usr/bin/perl
      
      $whoiami=`whoami`;
      
      print "$whoiami";
      
      chomp $whoiami;
      system ("cd /home/$whoiami/reports");
      
      print $whoiami;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-24
        • 2014-11-21
        • 2018-01-09
        • 2011-03-13
        • 2012-10-17
        • 2011-01-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多