【问题标题】:How could I access shell variable from Perl script?如何从 Perl 脚本访问 shell 变量?
【发布时间】:2020-05-01 04:56:26
【问题描述】:

在终端中,我可以访问变量$LINES

$ echo $LINES
39

像这样运行 Perl 脚本:

 #!/usr/bin/env perl

 use strict; use warnings;

 my $cmd = q|echo $LINES|;
 my $lines = `$cmd`;

 print "lines: $lines\n";

给出输出:lines:。我也尝试访问%ENV,但它不包含此特定密钥。

如何从 Perl 脚本访问 shell 变量 $LINES

【问题讨论】:

  • 你试过export $LINES吗?
  • 不,但它应该可以工作,因为我试过 LINES=20 my_script.pl 并且它可以工作
  • @w.k : LINES=20 my_script.pl 等价于 (export LINES=20; my_script.pl)。您看不到未导出的变量。

标签: shell perl environment-variables


【解决方案1】:

来自bash manual

当一个程序被调用时,它会得到一个字符串数组,称为 环境。 [...] shell 提供了几种方法来操作 环境。在调用时,shell 会扫描自己的环境并 为找到的每个名称创建一个参数,自动将其标记为 导出到子进程。 执行的命令继承环境。 exportdeclare -x 命令允许参数和函数 在环境中添加和删除。

所以(假设是 Bash shell)使用:

export LINES

将使变量$LINES 在Shell 的Perl 脚本startet 中可用(使用Perl 脚本中的$ENV{LINES})。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    相关资源
    最近更新 更多