在从子命令导入环境时,我想将从bash脚本导出的所有环境变量添加到散列中.当program运行时,它将设置一些变量并导出它们.我想将这些变量保存在Perl脚本中以供日后使用.但是我不想采用子命令中定义的bash函数.目前,我有一个块像:
foreach (`program; env`)
{
next if /^\(\)/;
my ($a, $b) = split("=", $_);
if( /^(\w+)=(.*)$/ ) {
$hash{$1} = $2;
}
}
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?我不确定匹配initial()是否安全.用于处理环境变量中的换行符的加分点,我现在只是闭上眼睛.
我不确定导入是否是正确的用词.我是Perl和Bash的初学者.我在Bash上设置了一个变量,所以当我这样做时:
echo $PRDIR
Run Code Online (Sandbox Code Playgroud)
它打印一个字符串(这是一个目录名)
我想将该字符串导入Perl,我不知道该怎么做.我试过了:
$varex = system("$PRDIR");
print "$varex";
Run Code Online (Sandbox Code Playgroud)
并且
$varex = system("echo $PRDIR");
print "$varex";
Run Code Online (Sandbox Code Playgroud)
但这不起作用(我理解最后一个,它打印"0"因为那是echo的返回值).我也试过重定向stdout到变量,但我不能.