问题很简单,但我还没有在谷歌找到答案。
如何在perl中运行这样的东西?
[$] VARIABLE=foo ./script.sh
我有一个perl脚本(例如Nvidia Cuda安装程序),脚本中有硬编码变量,但我想在运行脚本而不是编辑脚本时设置这些变量。
在bash中,它就像在上面发布的一样,但我不知道如何让它在perl上运行。
是否可以这样做?
问候。
编辑:澄清:这是install-linux.pl脚本的一个小部件:
sub can_add_for_all_users()
{
my $filename = "/usr/share/applications/.nvidiatoolkitinstall";
system("touch $filename 2>/dev/null");
if (-f $filename)
{
system("rm $filename");
return 1;
} else {
return 0;
}
}
我想运行这样的东西:
[$] filename="/tmp/.nvidiatoolkitinstall" perl install-linux.pl -destdir="${pkgdir}" -prefix="/opt/cuda" -noprompt -nosymlink
但这不起作用
我可以用sed编辑脚本:
[$] sed 's|/usr/share/applications/.nvidiatoolkitinstall|/tmp/.nvidiatoolkitinstall|g' -i install-linux.pl
但是我希望将变量解析为perl,就像bash可以做的那样
答案 0 :(得分:1)
您正在寻找“如何使用perl读取环境变量”。 Perl有%ENV
哈希,它保留所有这些变量。您只需使用$ENV{'VARIABLENAME'}
访问它们即可。简单的例子:
#!/usr/bin/perl
print $ENV{'VARIABLE'};
而不是VARIABLE=blahblah script.pl
返回blahblah
。
答案 1 :(得分:0)
local $ENV{VARIABLE} = 'foo';
system('./script.sh');