执行shell命令不会产生任何结果

时间:2017-05-30 20:13:41

标签: perl docker busybox alpine

我在Perl脚本中运行shell命令,但它没有按预期工作。我是一个以Alpine Linux为基础的容器。

我的Perl版本v5.24.0。

perl -e 'my $TEST = `ls -al`; print $TEST'

这不会打印任何内容,但适用于我在Red Hat Linux上使用Perl v5.6.1的另一个系统。

1 个答案:

答案 0 :(得分:5)

这可能是可能是你的问题。

我认为你没有定义PATH env var。

使用ls(/ bin / ls)的完整路径尝试此操作:

perl -e 'my $TEST = `/bin/ls -al`; print $TEST'

我测试了类似的情景:

清空路径:

PATH="" /usr/bin/perl -e'
   my $output = `ls -al`;
   if (!defined($output)) {
      die("readpipe: $!\n")                             if $? == -1;
      die("Child killed by signal ".( $? & 0x7F )."\n") if $? & 0x7F;
      die("Child exited with error ".( $? >> 8 )."\n")  if $? >> 8;
   }

   print($output);
'

输出:

readpipe: No such file or directory

使用绝对路径(/ bin / ls):

PATH="" /usr/bin/perl -e'
       my $output = `/bin/ls -al`;
       if (!defined($output)) {
          die("readpipe: $!\n")                             if $? == -1;
          die("Child killed by signal ".( $? & 0x7F )."\n") if $? & 0x7F;
          die("Child exited with error ".( $? >> 8 )."\n")  if $? >> 8;
       }

   print($output);
'

输出:

total 4531444
drwxr-xr-x  7 rbravo rbravo       4096 May 30 19:40 .
drwxr-xr-x 63 root   root         4096 Apr  7 14:11 ..
-rw-------  1 rbravo rbravo      12248 May 30 19:39 .bash_history
...
相关问题