除非它是环境变量,否则无法在perl脚本中访问shell变量

时间:2018-02-06 21:53:20

标签: perl

我需要在perl脚本中访问shell变量的值。如果它是环境变量而不是常规的ole shell变量,我可以得到它。考虑

% set AAA=Avalue
% setenv BBB=Bvalue
% echo $AAA
Avalue
% echo $BBB
Bvalue

到目前为止,这么好。现在,这是一个perl脚本来阅读它们......

#!/usr/bin/env perl
use strict;

print "AAA: ".$ENV{AAA}."\n";
print "BBB: ".$ENV{BBB}."\n";

exit;

当我跑步时,我得到......

AAA:
BBB: Bvalue

如何从perl脚本中获取AAA的值?

先谢谢

2 个答案:

答案 0 :(得分:3)

您没有获得AAA变量的值,因为AAA是本地env变量,其中BBB是导出变量。

导出的变量被导入到导出它们的shell启动的进程环境中,而非导出的变量只是当前进程的本地变量。

示例:

$ set AAA=123
$ csh
$ echo $AAA
AAA: Undefined variable.
$ exit

$ setenv BBB 456
$ csh
$ echo $BBB
456

答案 1 :(得分:1)

进程无法访问其他进程的内存,更不用说它的变量了。如果您希望Perl脚本具有值,则需要以某种方式将值传递给它(例如,通过其环境)。