perl - 在 perl 脚本中使用环境变量

标签 perl shell variables environment

我正在运行一个执行 shell 命令的 perl 脚本:

system ("bsub xyz +OPTIONS_GATE=$GATE")

这里 $GATE 是我的环境变量。当我执行脚本时。它给出了错误

"No arguments supplied for option group OPTIONS_GATE instance". 

如何处理这个问题。提前致谢

最佳答案

双引号字符串中的

$GATE 将被视为 Perl 变量。如果要使用环境变量,可以使用 %ENV 哈希:

system ("bsub xyz +OPTIONS_GATE=$ENV{GATE}")

或者,您可以转义美元符号,这样 Perl 就不会将 $GATE 视为 Perl 变量:

system ("bsub xyz +OPTIONS_GATE=\$GATE")

或者使用不插入变量的单引号字符串:

system ('bsub xyz +OPTIONS_GATE=$GATE')

请注意,如果您使用过

use strict;
use warnings;

它会告诉您这个错误。 strict 会说:

Global symbol "$GATE" requires explicit package name
Execution of script.pl aborted due to compilation errors.

warnings 会说:

Name "main::GATE" used only once: possible typo at script.pl line 12.
Use of uninitialized value $GATE in string at script.pl line 12.

当你不使用时使用strict;使用警告; 您的错误并没有被删除,它们只是对您隐藏起来,因此更难被发现。因此,请始终使用这两个编译指示。

关于perl - 在 perl 脚本中使用环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26037246/

相关文章:

multithreading - 线程中的 Perl 内存泄漏(线程不释放内存)

bash - 使用 sed (bash) 获取未终止的 's' 命令

regex - Unix 命令在匹配模式后打印数据的第二部分

python - Python 函数中包含的变量值

c++ - 枚举变量默认值?

perl - 如何取消引用已传递给子例程的 Perl 哈希引用?

perl: 打印 $1, $2...直到最后

java - 在 html 中显示 sqlite 数据库查询

linux - 如果之后使用管道,为什么 wait 会生成 “<pid> is not a child of this shell” 错误?

java - java中如何提示用户输入