我正在运行一个执行 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/