ibr*_*him 2 variables shell environment perl
我正在运行一个执行shell命令的perl脚本:
system ("bsub xyz +OPTIONS_GATE=$GATE")
Run Code Online (Sandbox Code Playgroud)
这$GATE是我的环境变量.当我执行脚本时.它给出了错误
"No arguments supplied for option group OPTIONS_GATE instance".
Run Code Online (Sandbox Code Playgroud)
如何处理这个问题.提前致谢
$GATE在双引号字符串中将被视为Perl变量.如果要使用环境变量,可以使用%ENV哈希:
system ("bsub xyz +OPTIONS_GATE=$ENV{GATE}")
Run Code Online (Sandbox Code Playgroud)
或者,您可以转义美元符号,以便Perl不会将其$GATE视为Perl变量:
system ("bsub xyz +OPTIONS_GATE=\$GATE")
Run Code Online (Sandbox Code Playgroud)
或者使用单引号字符串,它不插入变量:
system ('bsub xyz +OPTIONS_GATE=$GATE')
Run Code Online (Sandbox Code Playgroud)
请注意,如果您已经使用过
use strict;
use warnings;
Run Code Online (Sandbox Code Playgroud)
它会告诉你这个错误.strict会说:
Global symbol "$GATE" requires explicit package name
Execution of script.pl aborted due to compilation errors.
Run Code Online (Sandbox Code Playgroud)
并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.
Run Code Online (Sandbox Code Playgroud)
当您不使用时,use strict; use warnings;您的错误不会被删除,它们只对您隐藏,因此它们更难找到.因此,始终使用这两个pragma.
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |