我正在运行一个执行shell命令的perl脚本:
system ("bsub xyz +OPTIONS_GATE=$GATE")
此处$GATE
是我的环境变量。当我执行脚本时。它给出了错误
"No arguments supplied for option group OPTIONS_GATE instance".
如何处理这个问题。提前致谢
答案 0 :(得分:8)
$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.
当您不使用use strict; use warnings;
时,您的错误不会被删除,它们只对您隐藏,因此很难找到它们。因此,请始终使用这两个pragma。