linux - perl有没有办法运行多个linux命令并在它们之间保存环境变量

标签 linux perl

我有一个 perl 脚本,我想要执行以下操作:

系统(“源myscript.sh”);

myscript.sh 导出多个环境,但一旦系统完成,这些环境就会丢失,所以如果我现在这样做:

系统(“回显$ SOME_VAR”);

失败是因为 $SOME_VAR 被 myscript.sh 导出并在系统完成时丢失。

这是一个简单的示例,但在我的实际用例中,myscript.sh 是一个复杂的脚本,我想随后执行 10 到 20 个依赖于其中环境变量的系统命令。

预先感谢您的回复。

最佳答案

假设 myscript.sh 不打印任何内容,

%new_env = ();
open SCRIPT_ENV, 'source myscript.sh; printenv|';
map {/(.*?)=(.*)/ and do {$new_env{$1} = $2}} <SCRIPT_ENV>;
close SCRIPT_ENV;
%ENV = %new_env;

如果脚本 myscript.sh 打印一些内容,您将需要做一些更复杂的事情。

关于linux - perl有没有办法运行多个linux命令并在它们之间保存环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6438862/

相关文章:

带有条件的 Perl XPath 语句 - 这可能吗?

perl - Emacs 中双模式模式下更好的缩进

linux - Amazon Linux AMI 上没有可用的包 httpd

需要 Linux Cap_Kill 帮助

javascript - 如何在 perl CGI 中获取访问者浏览器窗口大小

perl - 如何使用带引号内占位符的查询? (perl/postgresql)

perl - 在 Perl 中使用特殊变量 $_ 和 @_ 有什么区别?

python - 使用 h5py 在 debian python 中访问文件

linux - Amazon EC2 - MindTerm 身份验证失败,权限被拒绝

linux - 期待 bash 脚本中的命令