我在Perl腳本中運行shell命令,但它不能按預期工作。我在一個裝有Alpine Linux的容器中作爲我的基本映像。執行shell命令什麼都不產生
我的Perl版本v5.24.0。
perl -e 'my $TEST = `ls -al`; print $TEST'
這不會打印任何內容,但可以在另一個系統上使用,我在Red Hat Linux上安裝了Perl v5.6.1。
我在Perl腳本中運行shell命令,但它不能按預期工作。我在一個裝有Alpine Linux的容器中作爲我的基本映像。執行shell命令什麼都不產生
我的Perl版本v5.24.0。
perl -e 'my $TEST = `ls -al`; print $TEST'
這不會打印任何內容,但可以在另一個系統上使用,我在Red Hat Linux上安裝了Perl v5.6.1。
這是一種可能性,也許是你的問題。
我想你沒有定義PATH env var。
嘗試的ls
(如/ bin/LS)本使用完整路徑:
perl -e 'my $TEST = `/bin/ls -al`; print $TEST'
我測試過類似的情景:
清空PATH:
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
...
嘗試,如果有一個錯誤:'的perl -e「我的$ TEST ='LS -al';打印$ TEST;打印$?如果$?'' – toolic
@toolic它打印0 – PMat
@Michael ls -al打印目錄的內容,它不是空的 – PMat