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

Executing shell command produces nothing

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

我的Perl版本v5.24.0.

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

这不会打印任何内容,但可以在我在 Red Hat 上安装 Perl v5.6.1 的另一个系统上运行 Linux。

有可能可能是你的问题。

我认为您没有定义 PATH 环境变量。

尝试使用 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
...