【问题标题】:Using Linux environmental variables as a path in Perl script在 Perl 脚本中使用 Linux 环境变量作为路径
【发布时间】:2014-06-05 16:37:17
【问题描述】:

我正在尝试使用环境变量来指向一个文件,通过一个子程序运行它并将它与一个变量相关联。我用 Windows 管理它,但我无法让语法适用于 Linux..

这就是我所拥有的:

 my $config = read_config("$ENV{APP_HOME}/config/APP-linux.cfg");

我的脚本在到达此行并出现错误时死亡:

    Use of uninitialized value $ENV{"APP_HOME"} in concatenation (.) or string at ./XXXXX.pl

APP_HOME 被定义为环境变量(使用 set 确认)。我做错了什么?

【问题讨论】:

  • echo $APP_HOME 从你的 shell 返回正确的值吗?
  • @HunterMcMillen 它没有...它给出:名称“main::APP_HOME”仅使用一次:./test.pl 第 8 行可能存在错字。无法在./test.pl 第 8 行的未定义值。
  • 你是刚刚设置还是导出?导出 APP_HOME=MY_VALUE
  • 这个显示什么:perl -e 'print "$ENV{APP_HOME}\n";'
  • 检查您的环境变量的完整列表:perl -MData::Dumper -e 'print Dumper \%ENV'

标签: linux perl environment-variables


【解决方案1】:

在 bash 中,= 只是创建一个 shell 变量。这些不会自动导出到环境中。你需要明确地这样做。

设置一个shell变量:

 $ AA=hello

设置并导出另一个(在单个语句中):

 $ export BB=there

开始一个新进程:

 $ bash

瞧!新进程只继承导出的变量:

 $ echo "[$AA] [$BB]"
 [] [there]

注意set 确实没有设置变量。 set AA=hello 不像 Windows shell 那样做。

【讨论】:

    【解决方案2】:

    好吧,解决方案是我自己的愚蠢。我使用以下方法在 .bashrc 中设置变量:

    APP_HOME=$HOME/APP/DATA/STORAGE; export FINE_DIR
    

    RAPID_DIR 无权在那里。是复制/粘贴的剩余部分,监督不力...将 FINE_DIR 更改为 APP_HOME,一切都很好。

    感谢大家的指导!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-26
      • 2017-09-08
      • 1970-01-01
      • 2018-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多